2017-02-25 3 views
2

名前、州、年、性別、名前のリストがあります。私は、すべての州を組み合わせて、何年にもわたって名前をプロットしようとしています。
python pandas indexing matplotプロット内のインデックスの1つを省略します。

allyears.head() 

、ここで結果をされています

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) 

私はインデックスを

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 

を行いますはその後、私は、結合状態の全てに年間のすべての「エマ」のを取得したいと思います:

plotname('F', 'Emma') 

しかし、私が代わりにエラーと空のプロットを得ます!
しかし、関数に 'state'パラメータを渡してコールに状態名を指定すると、その特定の状態で何年もエマが過ぎてしまいます。
何年にもわたってすべての州を結合し、同じインデックスパターンを維持するにはどうすればよいでしょうか?

+0

'pp'は何ですか? 'matplotlib.pyplot'? – ayhan

+0

@ayhanはい 'import numpy as np'、 ' import matplotlib.pyplot as pp'、 'import pandas as pd'、 ' 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') 
関連する問題