月の情報をグループ化したデータを含むcsvファイルがあり、cumsumを使用してその月の現在の合計をデータフレームに計算しました。
このコードの使用:
df = df.sort_index(sort_remaining=True).sort_values('months')
df['value'] = df.groupby('months')['value'].cumsum()
EXCELのOUTPUTの例ですが、私のDFは数千行で同じように見えます。
月をグループ化して各値をプロットするチャートをプロットしたいので、基本的に、値が時間の経過とともにどのように上下するかを示す12本のプロット線があります。
#月の名前は数値ではなく、新しいインデックス値の場合は次を使用する必要があるpivot
と思いrename
ますcumcount
。
d = {1: 'Jan', 2: 'Feb', 3: 'Mar', 4: 'Apr', 5: 'May',
6 : 'Jun',7: 'Jul', 8: 'Aug', 9: 'Sep', 10: 'Oct', 11: 'Nov', 12: 'Dec'}
g = df.groupby('months').cumcount()
pd.pivot(index=g, columns=df['months'], values=df['value']).rename(columns=d).plot()
詳細:
print(pd.pivot(index=g, columns=df['months'], values=df['value']).rename(columns=d))
months Jan Feb Mar Apr
0 50.0 2.0 10.0 5.0
1 80.0 3.0 16.0 20.0
2 120.0 8.0 31.0 40.0
3 140.0 11.0 34.0 50.0
4 NaN 15.0 43.0 75.0
編集:
プロットを使用するために数か月のみを定義する場合subset
:
months = ['Mar','Apr']
g = df.groupby('months').cumcount()
pd.pivot(index=g, columns=df['months'], values=df['value']).rename(columns=d)[months].plot()
入力中またはフィルターヶ月DataFrame
によるboolean indexing
とisin
:
df = df[df['months'].isin([3,4])]
g = df.groupby('months').cumcount()
pd.pivot(index=g, columns=df['months'], values=df['value']).rename(columns=d)[months].plot()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加