簡體   English   中英

如何使熊貓系列只在索引中繪制數據?

[英]How to make pandas's Series only plot the data in index?

編輯預期會錯過20140103和20140104的日期,我不希望它們自動打補丁。 而且我不想使用xs = pd.Series(data=range(len(ts)), index=pd.to_datetime(ts))而不是xs = pd.Series(data=range(len(ts)), index=pd.to_datetime(ts))因為我想使用一些操作

xs = pd.Series(data=range(len(ts)), index=pd.to_datetime(ts))

xs['2014']
Out[24]: 
2014-01-01    0
2014-01-02    1
2014-01-05    2
2014-01-06    3
2014-01-07    4
dtype: int64

不適用於:

In [26]: xs = pd.Series(data=range(len(ts)), index=ts)

In [27]: xs['2014']
---------------------------------------------------------------------------
KeyError: '2014'

例如:

In [1]: import pandas as pd

In [2]: ts = ['20140101', '20140102', '20140105', '20140106', '20140107']

In [3]: xs = pd.Series(data=range(len(ts)), index=pd.to_datetime(ts))

In [4]: xs.plot()

將繪制此圖像,在20140103、20140104上添加額外的數據。 在此處輸入圖片說明

雖然我想要這樣的圖像:

import matplotlib.pyplot as plt

plt.plot(xs.values)

在此處輸入圖片說明

感謝euri10的use_index = False

ts = ['20140101', '20140102', '20140105', '20140106', '20140107']
xs = pd.Series(data=range(len(ts)), index=pd.to_datetime(ts))
fig, ax = plt.subplots()
xs.plot(use_index=False)
ax.set_xticklabels(pd.to_datetime(ts))
ax.set_xticks(range(len(ts)))
fig.autofmt_xdate()
plt.show()

在此處輸入圖片說明

無法測試,但您可能要使用use_index = False和/或xticks

由於您將日期轉換為日期時間,因此熊貓會在x軸上繪制日期本身。 由於系列中不包含某些天,因此大熊貓將在x軸上的適當位置保留這些點所在的位置。 如果出於某種原因(例如,如果您正在計算工作日,而缺失點是周末),您不希望這樣做,那么我認為最清楚的解決方案是使索引不是日期,而是數字(第1天,第2天等)。 據我所知,大熊貓不允許您扭曲軸。

import pandas as pd
ts = ['20140101', '20140102', '20140105', '20140106', '20140107']

xs = pd.Series(data=range(len(ts)), index=pd.to_datetime(ts))
print xs


#output
2014-01-01    0
2014-01-02    1
2014-01-05    2
2014-01-06    3
2014-01-07    4

您缺少2個日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM