我正在使用如下所示的資料框:
REGION YEAR WEEK ILITOTAL TOTAL_PATIENTS
0 Alabama 2010 40 249 11664
52 Alabama 2010 41 239 11602
104 Alabama 2010 42 232 11945
156 Alabama 2010 43 274 12036
208 Alabama 2010 44 342 12069
... ... ... ... ... ...
22688 Alabama 2018 48 1263 41155
22742 Alabama 2018 49 1152 38716
22796 Alabama 2018 50 1420 38703
22850 Alabama 2018 51 1585 38533
22904 Alabama 2018 52 1977 38097
而且它沒有 YYYY/MM/DD 格式的日期這一事實給我帶來了一些麻煩,主要是在繪圖方面。例如,在這種情況下,我想最終得到一個或多或少這樣的情節:
陰謀
為此,我只留下了 YEAR、WEEK 和 TOTAL_PATIENTS,并嘗試合并 WEEK 和 YEAR 列,
Sdf_copy["WEEK_YEAR"] = Sdf_copy.WEEK.astype(str).str.cat(Sdf_copy.YEAR.astype(str), sep="-")
Sdf_AL = Sdf_copy[['WEEK_YEAR', 'TOTAL_PATIENTS']].copy()
print(Sdf_AL)
結束了這個:
WEEK_YEAR TOTAL_PATIENTS
0 40-2010 11664
52 41-2010 11602
104 42-2010 11945
156 43-2010 12036
208 44-2010 12069
... ... ...
22688 48-2018 41155
22742 49-2018 38716
22796 50-2018 38703
22850 51-2018 38533
22904 52-2018 38097
我試過用不同的方式來繪制這個,一個簡單的情節
plt.plot(Sdf_AL)
plt.show()
給出這個錯誤:TypeError: unhashable type: 'numpy.ndarray' 和類似這樣的東西
plt.plot(Sdf_AL.TOTAL_PATIENTS)
plt.show()
或者
plt.plot(Sdf_AL.WEEK_YEAR, Sdf_AL.TOTAL_PATIENTS)
plt.show()
結果總是與此類似:
陰謀
任何幫助將不勝感激,謝謝!
uj5u.com熱心網友回復:
這里有兩部分問題:(1)您在沒有特定日期的日期方面遇到麻煩(2)您無法正確繪制。
解決(1):最方便的方法是將星期開始硬編碼為一天,并將其轉換為日期時間物件以便于繪制:
Sdf_AL['WEEK_YEAR'] = pd.to_datetime(Sdf_AL['WEEK_YEAR'] '-1', format='%W-%Y-%w')
這里 '-1'是將作業日編號硬編碼到列WEEK_YEAR中,以便WEEK_YEAR看起來像例如。40-2010-1,格式為 Week-Year-Weekday(轉換為日期時間之前)。
尋址 (2):plt.plot(Sdf_AL.TOTAL_PATIENTS)您沒有明確指定繪圖的 x 軸和 y 軸。因此,該圖會自動以索引作為 x 軸進行渲染。在您的情況下,中的索引Sdf_AL類似于 [0, 52, 104, 156, 208, ...] 因此奇怪的情節渲染。
您應該明確指定軸。嘗試
plt.plot(Sdf_AL.WEEK_YEAR, Sdf_AL.TOTAL_PATIENTS)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/463731.html
標籤:Python 熊猫 matplotlib
