2016-05-29 3 views
2

Рассмотрите мою серию, как показано ниже: Первый столбец - article_id, а второй столбец - счетчик частоты.Как построить гистограмму из серии панд?

article_id 
1   39 
2   49 
3  187 
4  159 
5  158 
     ... 
16947  14 
16948  7 
16976  2 
16977  1 
16978  1 
16980  1 

Name: article_id, dtype: int64 

Я получил эту серию из dataframe с помощью следующей команды:

logs.loc[logs['article_id'] <= 17029].groupby('article_id')['article_id'].count() 

журналы является dataframe здесь и article_id является один из столбцов в ней.

Как построить график гистограммы (используя Matlplotlib), так что article_id находится на оси X и счетчике частоты по оси Y?

Моим естественным инстинктом было преобразование его в список с использованием .tolist(), но это не сохраняет article_id.

+1

Вопросы, подобные этим, действительно оставить меня интересно, если люди пытаются прибегая к помощи или читать документы, прежде чем задавать здесь. http://pandas.pydata.org/pandas-docs/stable/visualization.html – MaxNoe

ответ

5

IIUC вам нужно Series.plot.bar:

#pandas 0.17.0 and above 
s.plot.bar() 
#pandas below 0.17.0 
s.plot('bar') 

Пример:

import pandas as pd 
import matplotlib.pyplot as plt 

s = pd.Series({16976: 2, 1: 39, 2: 49, 3: 187, 4: 159, 
       5: 158, 16947: 14, 16977: 1, 16948: 7, 16978: 1, 16980: 1}, 
       name='article_id') 
print (s) 
1   39 
2   49 
3  187 
4  159 
5  158 
16947  14 
16948  7 
16976  2 
16977  1 
16978  1 
16980  1 
Name: article_id, dtype: int64 


s.plot.bar() 

plt.show() 

graph

+0

Спасибо. Любые предложения по увеличению размера сюжета? У меня 16980 различных значений в сюжете, и он выглядит немного конденсированным. Я попытался использовать plt.figure (figsize = (20,10)). PS Я использую встроенный сюжет. – Aashil

+1

'plt.figure (figsize = (20,10))' before 's.plot.bar()' работает для меня очень хорошо. – jezrael

+0

Работал. Я помещал его после 's.plot.bar()' – Aashil

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