DataFrameを月毎に分割してCSVで保存したい
作成したDataFrameを月毎のデータに分割してcsvで保存しようと考えているのですが、コードを実行するとエラーは表示されません。ですがファイルも作成されず過程を見るためにmonthly_dataのdataframeをprintしても何も表示されません。どこが間違っているのかご指摘いただけると有難いです。よろしくお願いいたします。
発生している問題・エラー
Process finished with exit code 0
該当するソースコード
# 作成したデータの読み込み
dfr=pd.read_csv('C:/data_information/Covid19_prediction/Covid19_data.csv')
# 日付データをdatetimeで変換
dfr['日付']=pd.to_datetime(dfr['日付'],format='%Y年%m月%d日')
# データを月ごとに分割する
df=dfr
df['year']=df['日付'].map(lambda x:x.year)
df['month']=df['日付'].map(lambda x:x.month)
# listの作成
sep_date=[]
sep_data=[]
sep_year=[]
sep_month=[]
last_date=[]
last_data=[]
df_datetime=df.日付.values
df_data=df.日別感染者数.values
df_year=df.year.values
df_month=df.month.values
# print(df_datetime)
# print(df_data)
# print(df_year)
# print(df_month)
# print(df.shape[0])
i=0
j=0
for idx in range(df.shape[0]):
# ループごとに先に数値を用意した配列に格納
sep_data.append(df_data[idx])
sep_date.append(df_datetime[idx])
sep_year.append(df_year[idx])
sep_month.append(df_month[idx])
# 差分を取るために最低でも月の要素は2つ必要。最初の格納時とを以降の処理を分ける
# 要素が1つしかない場合は差分が取れない次のループに移る
if len(sep_month)<=1:
i+=1
continue
# 要素が2つ以上になったら現在とひとつ前の要素の値で差分を取る
# 差分が0の場合は同じ月としてみなす
#
if len(sep_month)>1:
if sep_month[i]-sep_month[i-1]==0:
if idx+1 != df.shape[0]:
i+=1
continue
else:
pass
if len(last_date)>0:
sep_date.insert(0,last_date[j])
sep_data.append(0,sep_data[j])
j+=1
# CSVタイトル用
# 上のif文でiに1を足しているので-1する必要がある
ym=str(sep_year[i-1])+'-'+str(sep_month[i-1])
# 現在のループ回数+1の回数が最終行でなければ翌月のデータが配列に入ってくるためそれを取り除いたデータをデータフレーム化。
# データフレーム化しないとファイル出力不可
if idx+1 != df.shape[0]:
monthly_data=pd.DataFrame({'日付':sep_date[:-1],
'日別感染者数':sep_data[:-1]})
# 現在のループ回数+1の回数が元データの最終行であれば
# 月半ばで終わっている今回のデータでは翌月データが乗っかってこないため
# 配列に入れた要素をすべてをデータフレーム化する。
if idx+1 == df.shape[0]:
monthly_data = pd.DataFrame({'日付': sep_date[:],
'日別感染者数': sep_data[:]})
# CSVファイルとして出力し、保存する
monthly_data.to_csv('C:/data_information/Covid19_prediction/'+ ym +'.csv')
last_date.append(sep_date[-1])
last_data.append(sep_data[-1])
# ファイル出力したら配列を空にして、翌月のループで使用できるようにする
sep_date.clear()
sep_data.clear()
sep_year.clear()
sep_month.clear()
i=0
0