データに格納されている日付は202101のように、年と月がくっついた形になっています。
データの量は2010年の1月から2020年の12月までで、普通にplt.plotをするとxのメモリがつぶれてしまいます。
(グラフ割愛)
そこで、年ごとに表示するよう試しているのですがうまくいきません。どなたか原因わかる方いらっしゃいますか。
*元データの都合上、df['類・品目']が日付が入っている場所です。
##試したこと1
import matplotlib.dates as dates ... df = pd.read_csv(r"C:\Users\name\Downloads\zmi2015s.csv",encoding="SHIFT-JIS",parse_dates=['類・品目']) fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.plot(df['cpi'], color='black') ax.set_xlabel('year-month') ax.set_ylabel('cpi') ax.xaxis.set_major_locator(dates.YearLocator(1)) ax.xaxis.set_major_formatter(DateFormatter('%Y-%m'))
###結果1
なぜか範囲外の1970-01だけが表示される。
##試したこと2
parse_datesが機能してないのかと思い、確実にdatetimeに変換してみる。
new_xticks = [] for index, row in df.iterrows(): row['date'] = datetime(int(row['類・品目'][:4]), int(row['類・品目'][4:]), 1) new_xticks.append(date2num(datetime(int(row['類・品目'][:4]), int(row['類・品目'][4:]), 1))) fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.plot(df['date'],df['cpi'], color='black') ax.set_xlabel('year-month') ax.set_ylabel('cpi') ax.xaxis.set_major_locator(ticker.FixedLocator(new_xticks)) ax.xaxis.set_major_formatter(DateFormatter('%Y-%m'))
###結果2
さっきのグラフの1970-01がないまっさらな状態が表示される。
###参考にした記事
https://qiita.com/yoinhu/items/e0039309a47c75dade05
https://teratail.com/questions/140007
上にも書いた通り、年ごと2010, 2011, 2012 ...だけのメモリにしたいです。
お力添えよろしくお願いします・。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/17 01:01
2021/01/17 01:27
2021/01/17 01:34