2017-02-25 87 views
2

我有一個名稱,州,年份,性別和名稱出現次數的列表。我試圖在所有州合併多年來繪製一個名字。
python熊貓索引matplot省略了陰謀的其中一個索引

allyears.head() 

,這裏是結果:

name sex number year state 
0 Mary F 7065 1880 FL 
1 Anna F 2604 1880 NY 
2 Emma F 2003 1880 AZ 
3 Eli  F 1939 1880 AS 
4 Minnie F 1746 1880 AK 

然後我做索引:

allyears_indexed = allyears.set_index(['sex','name', 'state', 'year']).sort_index() 


並通過我的功能:

def plotname(sex,name): 
    data = allyears_indexed.loc[sex,name] 

    pp.plot(data.index,data.values) 


那麼我想獲得所有的「愛瑪」 S多年來在所有狀態的組合:

plotname('F', 'Emma') 

,但我得到而不是錯誤和一個空的陰謀!
但是,當我將'狀態'參數傳遞給函數,並在調用中提供狀態名稱時,我會得到'艾瑪多年來處於特定狀態。
這些年來,我怎樣才能把它結合起來並保持相同的索引模式?

+0

什麼是'pp'? 'matplotlib.pyplot'? – ayhan

+0

@ayhan是它'進口numpy爲np'和 'import matplotlib.pyplot as pp'和 'import pandas as pd' and 'import seaborn' – passion

回答

1

我相信你首先需要在年份和名字上分組,然後用loc來訪問結果數據。 groupby將在所有州中進行總結。

df = allyears.groupby(['year', 'name'], as_index=False).number.sum() 
>>> df 
    year name number 
0 1880 Anna 2604 
1 1880  Eli 1939 
2 1880 Emma 2003 
3 1880 Mary 7065 
4 1880 Minnie 1746 

>>> df.loc[df.name == 'Emma'] 
    year name number 
2 1880 Emma 2003 

並繪製它:

df.loc[df.name == 'Emma', ['year', 'number']].set_index('year').plot(title='Emma')