犯罪のファセットを含む犯罪の時系列データを含むデータフレームがあります(以下の形式のようになります)。時間の経過に伴う犯罪の傾向を調査できるように、データフレームでグループ化プロットを実行したいと思います。
Offence Rolling year total number of offences Month
0 Criminal damage and arson 1001 2003-03-31
1 Drug offences 66 2003-03-31
2 All other theft offences 617 2003-03-31
3 Bicycle theft 92 2003-03-31
4 Domestic burglary 282 2003-03-31
私はその仕事をするいくつかのコードを持っていますが、それは少し不器用で、Pandasが単一のプロットで提供する時系列フォーマットを失います。(説明のために画像を含めました)。誰かが私が使用できるそのようなプロットのイディオムを提案できますか?
Seabornに目を向けますが、xlabelを時系列としてフォーマットする方法がわかりません。
[![subs = \[\]
for idx, (i, g) in enumerate(df.groupby("Offence")):
subs.append({"data": g.set_index("Month").resample("QS-APR", how="sum" ).ix\["2010":\],
"title":i})
ax = plt.figure(figsize=(25,15))
for i,g in enumerate(subs):
plt.subplot(5, 5, i)
plt.plot(g\['data'\])
plt.title(g\['title'\])
plt.xlabel("Time")
plt.ylabel("No. of crimes")
plt.tight_layout()][1]][1]
これは、パンダの6つの散布図の再現可能な例でありpd.groupby()
、6年連続で取得されています。x軸にはその年の石油価格(ブレント)があり、y軸には同じ年のsp500の値があります。
import matplotlib.pyplot as plt
import pandas as pd
import Quandl as ql
%matplotlib inline
brent = ql.get('FRED/DCOILBRENTEU')
sp500 = ql.get('YAHOO/INDEX_GSPC')
values = pd.DataFrame({'brent':brent.VALUE, 'sp500':sp500.Close}).dropna()["2009":"2015"]
fig, axes = plt.subplots(2,3, figsize=(15,5))
for (year, group), ax in zip(values.groupby(values.index.year), axes.flatten()):
group.plot(x='brent', y='sp500', kind='scatter', ax=ax, title=year)
これにより、以下のプロットが生成されます。
(念のため、これらのプロットから、2010年には石油とsp500の間に強い相関関係があったが、他の年にはそうではなかったと推測できます)。
特定の種類やデータに合うように変更kind
することができgroup.plot()
ます。私の予想では、パンダは、データにx軸の日付形式がある場合、それを保持します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加