从数据框中按组绘制图形并在某些值之间绘制图形

时间:2018-04-13 18:36:15

标签: python python-3.x pandas dataframe matplotlib

我有一个财务数据集,其中包含某些时段内某些市场的衡量标准。

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。

2 个答案:

答案 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()

One subplot per metric

每个市场一个子图:

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()

One subplot per market

相关问题