Pandasでデータラングリングでよく使うもの

github.com

jakevdp.github.io

import pandas as pd

df1 = pd.read_excel("URL", sheet_name=0, header=None)

# Excelないとき
df1.to_csv("data.tsv", sep="\t")

# 行カウント確認
df1.notnull().sum(axis=0)

# 列カウント確認
df1.notnull().sum(axis=1)

# テキスト埋め
df1.iloc[行, 列] = "テキスト"

# テキスト絞り込み
df2 = df1.loc[df1.notnull().sum(axis=1) > 2, df1.notnull().sum() > 2].copy()

# 下方向
df2.fillna(method="ffill", inplace=True)

# 右方向
df2.fillna(method="ffill", axis=1, inplace=True)

# 辞書置換
s.map({"a": 0, "b": 1})
df.info()
df.shape
df.count()
df.dtypes
df.describe()

欠損処理

# 空文字を欠損値
df.mask(df == "", inplace=True)

# スペースのみを欠損値
df.mask(df.isin([" ", " "]), inplace=True)

# 数値以外は欠損値
pd.to_numeric(df["列名"], errors="coerce")

削除

# 行削除
df2.drop("行名", inplace=True)

# 列削除
df2.drop("列名", axis=1, inplace=True)

# データ数が5個未満の場合行削除
df.dropna(thresh=5, inplace=True)

# 列が欠損の場合行削除
df.dropna(subset=["列名"], inplace=True)

# すべての値が欠損の場合削除
df.dropna(how="all")

# 重複した行を削除
df.drop_duplicated()

columns設定

# 1行
df.iloc[1:].set_axis(df.iloc[0].to_list(), axis=1)


# 2行
columns = ["".join(i) for i in zip(*(df.head(2).values))]
df.iloc[2:].set_axis(columns, axis=1)

# 結合
df.columns.map("".join)