下記のような、「事故発生データ」をExcelファイルからPandasのDataFrameに読み込んで分析しています。
|年|月|日|発生場所|氏名|
|:--|:--:|--:|
|2021|4|24|東京|山田太郎|
【目的】
発生場所ごと(groupby)の、発生件数をカウント(.count())し、
それを更に月ごとにグルーピングしたものを、横軸(X:月)として、発生件数のグラフを作りたいです。
【やりたいこと】
グラフ表示のときに、古い日付を左から順に表示したいので、
現状、int型である3つのカラム(年、月、日)を連結し、datatime型に変換したいです。
【現状】
int型を、str型(object型)に変換し、それを
pd.to_datetime(////)
で連結して、datetime型にするという方法をとっています。
どうもこれが、正しいやり方でないような気がしています。
df_tmp['date'] = datetime(df['年'].tolist(),df['月'].tolist(),df['日'].tolist())
みたいにスマートに出来ると思ったのですが、こちらはエラーになりました。
僕のやり方よりも、良いやり方ご存知の方おりましたら、
ご教示頂けますと助かります。
よろしくお願いいたします。
以下、現状のサンプルコードです。
# モジュールインストール import pandas as pd # サンプルのDF df_samp = pd.DataFrame([[2021, 3, 22, 0], [2021, 3, 31, 0], [2021, 3, 26, 0], [2021, 3, 11, 0], [2021, 3, 24, 0], [2021, 1, 26, 0], [2021, 3, 21, 0], [2021, 3, 26, 0], [2021, 3, 25, 0], [2021, 1, 25, 0], [2021, 1, 28, 0]], columns= ['年','月','日','date'] ) # 文字列連結のため、intからstr型へ df_samp[['年','月','日']] = df_samp[['年','月','日']].astype(str) df_samp_date = df_samp df_samp_date['date'] = pd.to_datetime(df_samp['年'] + '-' + df_samp['月'] + '-' + df_samp['日']) # df_samp_dateの出力 df_samp_date
これで一応、やりたいことはできているような気がします。
datetime型から月ごとに合計値をだしたりと、扱うときに、ちゃんと出来るか不安ですが。。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/24 10:24
2021/04/25 08:12