項目
- 欠損値に対する処理
- 行・列名の変更
- 行・列名の取得
- dfをcsvとして出力
- 行・列の除去
- 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")