LoginSignup
0
3

More than 1 year has passed since last update.

Pandas df操作(欠損値/行列名変更・取得/csv出力/行・列の除去/結合)

Posted at

項目

  1. 欠損値に対する処理
  2. 行・列名の変更
  3. 行・列名の取得
  4. dfをcsvとして出力
  5. 行・列の除去
  6. dfの結合

1.欠損値に対する処理

欠損値の除外

python
#全ての値が欠損しているものの除外
#how = "all"
#欠損値を含む行の削除
df.dropna(how = "all")

#欠損値を含む列の削除
df.dropna(how = "all", axis = 1)

#行、列共に削除したい場合はそれぞれ適用する
df.dropna(how='all').dropna(how='all', axis=1)

#-----------------------------------
#欠損値が一つでも含まれるものの処理
#how = "any"
#行の削除
df.dropna(how = "any")

#欠損値を含む列の削除
df.dropna(how = "any", axis = 1)

欠損値の置き換え

python
#欠損値の置き換え
#fillna()
#共通の値に置き換え
df.fillna("num")

#列ごとに異なる値で置き換え
#引数で辞書を使う
df.fillna({"id":0, "name":"null"})

#-----------------------------------

#平均値、中央値、最頻値での置き換え
#平均値
#下記の場合は全てを平均値で、列ごとは列指定で
df.fillna(df.mean())

#中央値で
df.fillna(df.median())

#最頻値で
df.fillna(df.mode().iloc[0])

#前後の値で置き換え
#前の値をいれる
df.fillna(method='ffill')

#後ろの値をいれる
df.fillna(method='bfill')

欠損値があるものの抽出

python
#欠損値がある列や行を取り出す
#isnull()
#欠損値の含まれているレコード
df[df['カラム'].isnull()]

#特定の行の欠損値があるカラム
df.iloc[0].isnull()

#欠損値が一つでも含まれる行・列
#isnull().any()
#axis=1で行、axis=0で列
df2.isnull().any(axis=1)

2.行・列名の変更

任意の行・列名変更

python
#dfが再発行される
#カラムの変更
#rename(columns={"元の名前":"変更後の名前})
#レコードの変更
#rename(index={"元の名前":"変更後の名前})
df.rename(columns={'A': 'new_A'}, index={'ONE': 'new_one'})

複数の行・列名変更

python
#複数の変更
df.rename(columns={'A': 'new_A', 'C': 'new_one'})

3.行・列名の取得

カラム名

リストで取得

python
df.columns.values()

行名

python
df.index.values()

4.dfをcsvとして出力

python
#to_csv("ファイル名", sep="区切り文字", index="True or False"(行名を出すか、Trueなら出力), encoding="文字コード")
df.to_csv("csvファイル名", sep=",")

5.行・列の除去

カラム・レコードが除去された新しいdfを出力

python
#drop("カラム名", axis=1)
#またはdrop(columnns=["~~~"], index=["~~~"])
df_new = df.drop("column", axis=1)

#複数の場合は引数を行列に
df_new = df.drop(["column","column_2"], axis=1)

元となるdfから直接除去

python
#del df["~~~"]
del df[["column","cplumn_2"]]

6.dfの結合

内部結合

python
#pd.merge(df_1, df_2, on="keyのカラム")
pd.merge(df_1, df_2, on="id")

#カラム名が違う場合
pd.merge(df_1, df_2, left_on='id', right_on='id_2')
#これでやるとkeyにした二つのカラムがそのまま残るので、この後にdropなどで除去しておく
#こんな感じで一気にやってもOK
pd.merge(df_1, df_2, left_on='id', right_on='id_2').drop(columns='id_2')

#-----------------------------------

#引数にしたいカラムが複数ある場合
pd.merge(df_1, df_2, on=["id","name"])

#複数かつ違う場合
pd.merge(df_1, df_2, left_on=["id","name"], right_on=["id_2","name_2"]).drop(columns=["id_2","name_2"])

結合方法の指定

python
#内部結合
#how="inner"
pd.merge(df_1, df_2, on="id", how="inner")

#外部結合
#how="outer"
#値が存在しない場合はNaNになる
pd.merge(df_1, df_2, on="id", how="outer")
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3