2017-07-25 11 views
2

複数の列を持つデータフレームのプロットを作成する必要があります。私はx軸上に日付があります。どのようにプロットにすべての日付があるようにすることが可能ですか?今私のデータは5ヶ月に1回の期間で表示されます。一部の列では、データは非常に小さいですが、プロット上に表示されることは非常に重要です。私のデータフレームはこのように見えます。パンダにすべての日付を含むプロットを作成する

df.plot(figsize=(20,10), x='date', y=['col1', 'col2', 'col3', 'col4', 'col5', 'col6']) 

plt.show() 

私が何かアドバイスに感謝、次のようになります。

date  col1  col2  col3  col4  col5  col6 
20.05.2016 1091,06  12932,31  0 9343,334 23913,74  0 
27.05.2016 1086,66  11845,64  0 9786,654 23913,74  0 
03.06.2016 1083,04  10762,59  0 9786,654 23913,74  0 
10.06.2016 1083,96  9678,630 4000 9786,654 23913,74  0 
17.06.2016 1087,31  22718,40  0 9786,654 23913,74 1412 
24.06.2016 1089,78  21628,62  0 9786,654 23828,96  0 
01.07.2016 1083,70  20544,92  0 9749,567 23828,96  0 
08.07.2016 1081,92  19463   0 9749,567 23828,96  0 
... 

私のコードは次のようになります。

cols = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6'] 
df.set_index('date')[cols].plot(figsize=(20,10)) 

そしてdfのすべての列のためにそれを省略します。:

df.set_index('date').plot(figsize=(20,10)) 

しかし0なしですべての列が必要な場合は名前で必要フィルタ列があればサブセット[]を必要とするならば、

答えて

3

まず使用set_indexboolean indexinglocとし、すべての列をne!=)およびall(すべて)でフィルタリングしてください列あたりS:

#replace decimals , to . and then to floats, check notice for another solution 

df['Date'] = pd.to_datetime(df['Date']) 
df = df.set_index('date').replace(',', '.', regex=True).astype(float) 

print (df.ne(0)) 
      col1 col2 col3 col4 col5 col6 
date            
2016-05-20 True True False True True False 
2016-05-27 True True False True True False 
2016-03-06 True True False True True False 
2016-10-06 True True True True True False 
2016-06-17 True True False True True True 
2016-06-24 True True False True True False 
2016-01-07 True True False True True False 
2016-08-07 True True False True True False 

print (df.ne(0).all()) 
col1  True 
col2  True 
col3 False 
col4  True 
col5  True 
col6 False 
dtype: bool 

df = df.loc[:, df.ne(0).all()] 
print (df) 
       col1  col2  col4  col5 
date            
2016-05-20 1091.06 12932.31 9343.334 23913.74 
2016-05-27 1086.66 11845.64 9786.654 23913.74 
2016-03-06 1083.04 10762.59 9786.654 23913.74 
2016-10-06 1083.96 9678.63 9786.654 23913.74 
2016-06-17 1087.31 22718.40 9786.654 23913.74 
2016-06-24 1089.78 21628.62 9786.654 23828.96 
2016-01-07 1083.70 20544.92 9749.567 23828.96 
2016-08-07 1081.92 19463.00 9749.567 23828.96 


df.plot(figsize=(20,10)) 

お知らせ

あり小数との問題もあるので、上記の溶液中で使用さastyperead_csvまたはreplaceでパラメータdecimalが必要になります。

df = pd.read_csv('filename', index_col=['date'], decimal=',', parse_dates=['date']) 

print (df) 
       col1  col2 col3  col4  col5 col6 
date               
2016-05-20 1091.06 12932.31  0 9343.334 23913.74  0 
2016-05-27 1086.66 11845.64  0 9786.654 23913.74  0 
2016-03-06 1083.04 10762.59  0 9786.654 23913.74  0 
2016-10-06 1083.96 9678.63 4000 9786.654 23913.74  0 
2016-06-17 1087.31 22718.40  0 9786.654 23913.74 1412 
2016-06-24 1089.78 21628.62  0 9786.654 23828.96  0 
2016-01-07 1083.70 20544.92  0 9749.567 23828.96  0 
2016-08-07 1081.92 19463.00  0 9749.567 23828.96  0 
関連する問題