2015-03-30 1 views
1

Я пытаюсь построить гистограмму с использованием панд. DataTime - это индексный столбец, который я получаю из timestamp. Вот структура таблицы:Графический график с использованием нескольких групповых счетов в panda

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

июня имеет всего 4 входа и один запись начинается с u. поэтому X имеет 4 y имеет 1. То же самое для июля.

Также я хочу построить гистограмму (записи X и Y) с использованием вывода. Я хочу МЕСЯЦА против значения гистограммы

+0

Это почти точная копия http://stackoverflow.com/questions/29283618/python-panda-time -ряды-ре-выборки /. – leekaiinthesky

+1

Пожалуйста, напишите ваши вопросы, чтобы они имели смысл без ссылки на ссылки на внешние сайты. Вопросы о SO должны быть полезны будущим читателям, и если эти ссылки умрут, ваш вопрос будет очень трудно понять. Кроме того, не размещайте ссылки на изображения текста (или вставляйте прямые изображения текста) - размещайте текст сам по себе, возможно, в блоке Quote или в блоке Code, если вам нужно сохранить форматирование. –

ответ

1

Я создал DataFrame с Dict:

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 
+0

Я получаю сообщение об ошибке, когда использую код вашей группы. Это ошибка. Объект «Серии» не имеет атрибута «dt». Это пример данных на моем df ['DateTime'] => 2013-06-25 – user3930865

+0

@ user3930865, вам нужно убедиться, что ваша серия имеет тип datetime64, а не - скажем - строки ... например. используя df ['DateTime'] = pd.to_datetime (df ['DateTime']). Также убедитесь, что вы используете довольно недавнюю версию pandas> = 0.15. –

+0

Я использую версию панды # 0.14.1. my df ['DateTime']. dtype - объект. Это должно быть datetime64 в соответствии с вашим последним комментарием. Я попытался преобразовать его, но я не мог решить проблему. Я использую anaconda с версией 2.7 python – user3930865

Смежные вопросы