逆日歩速報のデータはpythonによって整形しています。
pandasによって、おこなっている作業をご紹介です。
pandas削除に関連するテクニック
不必要なデータをなるべく少なくすることが、エラー回避にもつながり重要です。
今回は、集めたデータからいらない部分を削除する色々な方法をまとめました。
列を指定して削除
df.drop('code', axis=1)
indexの列を削除
df.drop(columns='index')
重複データを削除
#codeの重複を削除 df2 = df[~df['code'].duplicated()]
特定のユーザーIDを持つ行を削除
# 削除対象のユーザーIDリスト users_to_remove = ['@user_A', '@user_B', '@user_C', '@user_D','@user_E'] # 特定のユーザーIDを持つ行を削除 df = df[~df['user_id'].isin(users_to_remove)]
NANという空白データがある行を削除
#指定した列にNANがある行を削除 df2 = df.dropna(subset=['code'])
条件を指定してデータを削除
#NaNがない場合、例えば、codeの列に0がある行を削除したい場合は、dropなどを使わない #それ以外のデータを選択すれば良い df2 = df[df['code'] != 0]
複数年度がある最新データから削除
2021年、2022年、2023年といった感じでデータがある場合、最新データの各カラムにまだ情報が入っていない、データがないなら、その行は不要という判断。
通常コード
# 各企業の最新年を取得します latest_years = df_new.groupby('code')['year'].max() # 削除する行のインデックスを取得します indexes_to_drop = [] for index, row in df_new.iterrows(): if row['year'] == latest_years[row['code']] and row['sum'] == 0: indexes_to_drop.append(index) print(row['code']) # インデックスを指定して行を削除します df_new = df_new.drop(indexes_to_drop)
スピードが早いコード
# 不要な行を削除する関数を定義します def keep_latest_rows(group): latest_year = group['year'].max() return group.loc[(group['year'] != latest_year) | (group['sum'] != 0)] # 各グループに対して関数を適用し、結果を連結します df = df.groupby('code').apply(keep_latest_rows).reset_index(drop=True) # 結果を表示します print(df)
以上、今回はpandasに関連する色々なデータの削除方法でした。