我有一个财务数据集,其中包含某些时段内某些市场的衡量标准。
market date metric1 metric2 metric3
ASX 2000
ASX 2001
ASX 2002
ASX 2003
TSX 2000
TSX 2001
TSX 2002
TSX 2003
TSX 2004
NYSE 2000
NYSE 2001
NYSE 2002
NYSE 2003
NYSE 2004
Metric1到metric3包含数值。我想绘制一些按市场分组的线图或条形图,以及一些日期值,例如2000和2002。我的日期变量可能是一个月(例如200101,200102)。有没有办法告诉python它是常年,所以200112和200201之间没有差距? 我正在使用matplotlib和pandas。
答案 0 :(得分:2)
有没有办法告诉python它是常年,所以200112和200201之间没有差距?
根据您的描述,您可能会在寻找pd.Series.between
。您可以使用它,例如,
df.date = pd.to_datetime(df.date) # "tell" pandas it is dates.
df[df.date.between(pd.to_datetime('2011-01'), pd.to_datetime('2012'))]
如您所见,pd.to_datetime
可以采用不同的格式(有蛾和日期或没有)。另请注意,between
具有inclusive
参数。
答案 1 :(得分:1)
我想绘制一些按市场分组的线条图或条形图 在一些日期值之间,比如说这个例子中的2000和2002
我将在两种情况下使用这作为我的数据:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'market': ['A', 'A', 'B', 'B', 'C', 'C'],
'date': [2000, 2001, 2000, 2001, 2000, 2001],
'm1': [1, 2, 3, 4, 5, 6 ],
'm2': [4, 3, 5, 2, 1, 0]})
使用@Ami Tavory's answer正确格式化日期
对于每个指标的一个子图:
f, ax = plt.subplots(ncols=2)
df.pivot(columns='market', index='date', values='m1').plot(ax=ax[0])
df.pivot(columns='market', index='date', values='m2').plot(ax=ax[1])
plt.plot()
每个市场一个子图:
f, ax = plt.subplots(ncols=3)
df[df.market=='A'].plot(x='date', y=['m1', 'm2'], ax=ax[0])
df[df.market=='B'].plot(x='date', y=['m1', 'm2'], ax=ax[1])
df[df.market=='C'].plot(x='date', y=['m1', 'm2'], ax=ax[2])
plt.plot()