よく使うコードのメモ
読み込み
df = pd.read_excel("test.xlsx") df = pd.read_excel(r"C:\Users\***\python\test.xlsx") df = pd.read_csv("test.csv", encoding='shift_jis') df = pd.read_csv("test.csv", encoding='cp932') df = pd.read_csv("test.csv", encoding='utf-8')
列を指定して、読み込み
pd.read_excel("test.xlsx", usecols=[0, 3]) pd.read_excel("test.xlsx", usecols=['姓', '名'])
結合列の作成
df['姓'] = df['姓'].fillna('') # 「姓」列のNaNを空文字列で埋める df['名'] = df['名'].fillna('') # 「名」列のNaNを空文字列で埋める df['姓名'] = df['姓'] + df['名']
書き出し
絶対参照の場合は「r””」
絶対参照+変数の場合は「fr””」
to_csvは「encoding=’shift_jis’」(Excelで文字化けしない)
df.to_excel("output.xlsx", index=False) df.to_excel(r"C:\Users\***\python\output.xlsx", index=False) today_str = datetime.now().strftime("%Y%m%d") df.to_excel(fr"C:\Users\***\python\{today_str}_output.xlsx", index=False) df.to_csv("output.csv", index=False, encoding='shift_jis') df.to_csv("output.csv", index=False, encoding='utf-8')
リネーム
df.rename(columns={'商品コード': 'ID'}, inplace=True) df.rename(columns={'商品コード': 'ID', '商品名': '品名'}, inplace=True)
日付フィルター(今日のみ)
df = pd.read_excel("sales_data.xlsx") df["日付"] = pd.to_datetime(df["日付"]) # datetime型に変換 df["日付"] = df["日付"].dt.normalize() # 時刻情報を削除 # 日付設定 today = pd.Timestamp.today().normalize() # 今日(時刻をクリア) # 日付フィルター df = df[df["日付"] == today] df.to_excel("output.xlsx", index=False)
日付フィルター(今の会計年度以降)
df = pd.read_excel("sales_data.xlsx") df["日付"] = pd.to_datetime(df["日付"]) # datetime型に変換 df["日付"] = df["日付"].dt.normalize() # 時刻情報を削除 # 日付設定 today = pd.Timestamp.today().normalize() # 今日(時刻をクリア) current_year = today.year if today.month >= 4 else today.year - 1 # 4月以降ならその年、3月までなら前年 fiscal_start_date = pd.Timestamp(f"{current_year}-04-01") # 会計年度 # 日付フィルター start_day = fiscal_start_date # 開始日 df = df[(df["日付"] >= start_day)] df.to_excel("output.xlsx", index=False)
日付フィルター(前月の1ヶ月間)
df = pd.read_excel("sales_data.xlsx") df["日付"] = pd.to_datetime(df["日付"]) # datetime型に変換 df["日付"] = df["日付"].dt.normalize() # 時刻情報を削除 # 日付設定 today = pd.Timestamp.today().normalize() # 今日(時刻をクリア) this_month_start = today.replace(day=1) # 今月の初日 last_month_start = this_month_start - pd.DateOffset(months=1) # 先月の初日 # 日付フィルター start_day = last_month_start # 開始日 end_day = this_month_start # 終了日 df = df[(df["日付"] >= start_day) & (df["日付"] < end_day)] df.to_excel("test.xlsx", index=False)
※日付設定集
today = pd.Timestamp.today().normalize() # 今日(時刻をクリア) yesterday = today - pd.Timedelta(days=1) # 昨日の日付を計算 one_month_ago = today - pd.DateOffset(months=1) # 1か月前 one_year_ago = today - pd.DateOffset(years=1) # 1年前 specific_date = pd.Timestamp("2025-05-01") # 特定の日 # 会計年度 current_year = today.year if today.month >= 4 else today.year - 1 # 4月以降ならその年、3月までなら前年 fiscal_start_date = pd.Timestamp(f"{current_year}-04-01") # 会計年度 # 前月~今月~次月 this_month_start = today.replace(day=1) # 今月の初日 next_month_start = this_month_start + pd.DateOffset(months=1) # 次月の初日(=今月の最終日の翌日) last_month_start = this_month_start - pd.DateOffset(months=1) # 先月の初日
条件フィルター
df = df[~df['姓'].str.contains('田中', na=False)] # 含む df = df[df['姓'] != '田中'] # 完全一致 df = df[df['年齢'] >= 20] # 条件式
並び替え(デフォルト昇順)
df = df.sort_values(by='年齢') # 昇順(小さい値から大きい値へ) df = df.sort_values(by='年齢', ascending=False) # 降順(大きい値から小さい値へ)
重複の削除(デフォルトkeep='first')
df = df.drop_duplicates(subset=['ID']) df = df.drop_duplicates(subset=['ID'], keep='last')
マージ
df = pd.merge(df, df_2, on='ID', how='left')