在熊猫中使用多个分组绘制条形图

时间:2015-03-30 20:06:28

标签: python pandas group-by

我正在尝试使用pandas绘制条形图。 DataTime是我从时间戳得到的索引列。这是表结构:

table structure

到目前为止,我写了这个:

import sqlite3
from pylab import *
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime as dt

conn = sqlite3.connect('DEMO2.sqlite')
df = pd.read_sql("SELECT * FROM Data", conn)
df['DateTime'] = df['DATE'].apply(lambda x: dt.date.fromtimestamp(x))

df1 = df.set_index('DateTime', drop=False)     

grouped= df1['DateTime'].groupby(lambda x: x.month)    
#df1.groupby([df1.index.month, 'DateTime']).count()    
grouped.count()

我想要这样的输出:

date vs. X and Y

6月共有4个条目,一个条目以u开头。所以X有4 y有1.相同的7月。

此外,我想使用输出绘制条形图(X和Y条目)。我想要MONTH vs Values条形图

1 个答案:

答案 0 :(得分:1)

我会用dict创建DataFrame:

result = pd.DataFrame({'X': g.count(),
                       'Y': g.apply(lambda x: x.str.startswith('u').sum())})

现在您可以使用绘图方法绘制月份与值。

result.plot()

注意:您可以更有效地创建分组:

grouped = df1['DateTime'].groupby(df1['DateTime'].dt.to_period('M'))

grouped = df1['DateTime'].groupby(df1['DateTime'].dt.month)  # if you want Jan-2015 == Jan-2014