Pandas Tips: 便利な使い方とテクニック#

NAという文字列をNAとして扱う#

keep_default_na=False

Windowsで改行をLFにしたい#

line_terminator='\n'

Shift_JISで扱いたい#

encoding='cp932'

CSVのformat#

quoting=csv.QUOTE_ALL
quoting=csv.QUOTE_MINIMAL
quoting=csv.QUOTE_NONNUMERIC
quoting=csv.QUOTE_NONE

重複行の削除#

df.drop_duplicates()

カラムに列追加#

df['name_state'] = df['name'].str.cat(df['state'], sep=' in ')

カラムのリネーム#

df_new = df.rename(columns={'A': 'Col_1', 'C': 'Col_3'})

表の結合#

print(df_ab.merge(df_ac))
print(pd.merge(df_ab, df_ac, on='a'))
print(pd.merge(df_ab, df_ac, on='a', how='outer'))

where句のように一致列で絞り込み#

print(df['state'] == 'CA')

文字列検索#

# 特定の文字列を含む
print(df[df['name'].str.contains('li')])

# 特定の文字列で終わる
print(df[df['name'].str.endswith('li')])

# 特定の文字列で始まる
print(df[df['name'].str.startswith('li')])

# 正規表現のパターンに一致する
print(df[df['name'].str.match('li')])

省略表示の制御#

pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.max_seq_items', 500)

オプションのリセット#

pd.reset_option('display.max_seq_items')

条件に応じた値の変更#

df.loc[df['A'] < 0, 'A'] = -10

小数点以下の切り上げ#

# float計算値をintに変換したものとの差が0以上のもの1プラスする

to_csvで分割#

k = 10000  # 1DataFrameあたりの行数
dfs = [df.loc[i:i+k-1, :] for i in range(0, len(df), k)]
for i, df_i in enumerate(dfs):
  fname = str(i) + ".csv"
  df_i.to_csv(fname)