2017-03-21 18 views
2

私はPandas、MatplotlibのようなPythonモジュールを使って大学のプロジェクトのチャートを作っています。 ピボットテーブルで結果を注文する際に問題が発生しました。Pythonで積み上げプロット

これは、入力([2017-03-03, ...]、、[1012020,103024,...])で3つのリストを取り、データを分析してチャートを作成する関数の本体です。

data = [date_list,username,field] 
username_no_dup = list(set(username)) 

rows = zip(data[0], data[1], data[2]) 
headers = ['Date', 'Username', 'Value'] 
df = pd.DataFrame(rows, columns=headers) 
df = df.sort_values('Value', ascending=False) 
#*sort_values works but it is not sorting when converting to Pivot Table* 
pivot_df = pd.pivot_table(df ,index='Date', columns='Username', values='Value') 
pivot_df.loc[:,username_no_dup].plot(kind='bar', stacked=True, color=color_list, figsize=(15,7)) 

私はチャートのX線の近くに大きな値を持つ値で注文したいと思います。誰もがこの問題を解決しましたか?

[['2017-03-15','SSL1_APP',1515091] 
['2017-03-16','SSL1_APP',1373827] 
['2017-03-18','SSL1_APP',1136483] 
['2017-03-21','SSL1_APP',601810] 
['2017-03-17','SSL1_APP',325561] 
['2017-03-15','KE77_APP',284971] 
['2017-03-16','AF77_APP',222588] 
['2017-03-16','MI77_APP',222148] 
['2017-03-15','AF77_APP',202224] 
['2017-03-15','MI77_APP',191791] 
['2017-03-17','AF77_APP',187709] 
['2017-03-16','PC77_APP',185766] 
['2017-03-15','NE77_APP',177475] 
['2017-03-18','FBW2_APP',175156] 
['2017-03-16','NE77_APP',174570] 
['2017-03-17','BFD1_APP',164238] 
['2017-03-15','BFD1_APP',162931] 
['2017-03-20','AF77_APP',152186] 
['2017-03-17','PC77_APP',148727] 
['2017-03-18','MI77_APP',147460] 
['2017-03-16','BFD1_APP',145815] 
['2017-03-20','BFD1_APP',145449] 
['2017-03-15','PC77_APP',144959] 
['2017-03-20','SSL1_APP',141719]] 

最初のPICは、私が作成したプロットである:ここでは

は値によってソートdfの先頭行です、ありがとうございました。二つ目は、私が望む結果であり、エクセルでプロット:

enter image description here

答えて

0

注:をこれはあなたの入力をソート対象にPythonの答えです。

これを行う1つの方法は、2次元リスト(リストのリスト)を使用してそれをソートすることです。

これは、あなたがそれを使用してきた方法です:

data = [date0,username0,randint0,date1,username1, .... 

代わりに二次元のリストをお試しください:

data = [[date0,username0,randint0], [date1,username1,randint1]... 

は.sort()メソッドを使用して、このように見えるように構文を変更します。

data.sort() #Sort it, by default it will be a decreasing list. 
rows = zip(data[0][0], data[0][1], data[0][2]) 

標準の.sort()メソッドには制限があります(1つのfloat)ので、望ましい出力を返しません.sort()パラメータを使用してみてください。ここでは主題に関する洞察があります。には、浮動小数点で問題がある場合は、答えをチェックしてください。

+0

私はその解決策を試しましたが、良い結果はありませんでした。 ピボットテーブルを並べ替えることはできませんか?これは私に希望の結果をもたらしてくれたので....しかしソートされていない... – Marco

関連する問題