2016-07-01 7 views
0

カスタマーごとに別々のファイルに独自のサブプロットを持つ顧客ごとのコードを持つ線グラフサブプロットを作成したいと考えています。複数のインデックスを持つパンダ線グラフのサブプロット

  Date Code Customer  Purchases 
1 6/22/2016 6-BZt  Piggy    8 
2 6/22/2016 7rTPn  Piggy    1 
3 6/22/2016 Hb4vZ  Piggy    1 
4 6/22/2016 L0xs5  Piggy   94 
5 6/22/2016 S5cLN  Goose    2 
6 6/22/2016 k4Yp5  Goose    1 
8 6/21/2016 6-BZt  Goose    8 
9 6/21/2016 7rTPn  Piggy    1 
10 6/21/2016 Hb4vZ  Piggy    1 
11 6/21/2016 L0xs5  Piggy   94 
12 6/21/2016 S5cLN  Goose    2 
13 6/21/2016 k4Yp5  Goose    1 

私は

lineSess = lineSess.set_index(['Date', 'Customer', 'Code']) 
lineSess.unstack().plot(subplots=True) 

を試みたが、それは私が望むように出力していません。

+1

いくつかの質問があります:(1)別の_file_によって、_figure_を分けることを意味しますか? (2)それで、6つのサブプロットを持つ2つの数字がそれぞれ固有のコードの数なので、それは欲しいということですか? (3)購入数をy軸にしたいと思っていますが、x軸とは何ですか? – lanery

+0

1)うん、私はフィギュアを意味した。うわー。 2)正確です。 3)X軸は日付範囲です – DeadCake

答えて

0

だから私は、まず、各顧客のデータフレームを別々のデータフレームに分割し、インデックスを設定してから、スタックを作成してプロットすることをお勧めします。あなたは購入数が1日から次へと変更されませんので、あなたが提供されたデータではなく、退屈になりますこれらのプロットこの

lineSess.sort_values(by='Customer', inplace=True) 
lineSess.set_index('Customer', inplace=True) 

# get list of unique customer names 
customers = lineSess.index.unique().tolist() 

# create an empty dataframe for each customer name 
customer_dfs = {k: v for k, v in zip(customers, [pd.DataFrame()]*len(customers))} 

# fill the empty dataframes with the data corresponding to each particular customer 
for key, df in customer_dfs.iteritems(): # customer_dfs.items() for python-3.x 
    df = lineSess.loc[lineSess.index==key] 
    df = df.set_index(['Date', 'Code'], drop=True) 
    df['Purchases'].unstack(level='Code').plot(subplots=True, title=key) 

ような何かを行うことができ、お客様の任意の数を考えます。しかし、これがあなたのデータセットの一部に過ぎないと仮定すると、プロットはもっと有益な情報になるかもしれません。

関連する問題