繁体   English   中英

如何使用折线图可视化熊猫DataFrame?

[英]How to visualize the pandas DataFrame with line graph?

我有一个附带信息的pandas DataFramedf.info()打印如下,

<class 'pandas.core.frame.DataFrame'>
Int64Index: 6661 entries, 0 to 6660
Data columns (total 3 columns):
value      6661 non-null float64
country    6477 non-null object
outlier    6661 non-null int64
dtypes: float64(1), int64(1), object(1)
memory usage: 208.2+ KB
None 

df.columns.values打印如下,

[u'value' 'country' 'outlier'] 

df打印如下,

       value country  outlier
0     118.66   CHINA        0
1     120.83   CHINA        0
2      86.83   USA          0
3     112.15   CHINA        0
4     113.60   CHINA        0
5     114.32   CHINA        1
6     111.43   CHINA        0
7     117.22   CHINA        1
8     111.43   CHINA        0

- - - - - - - - - - - - - - -

- - - - - - - - - - - - - - -

6652  420.00     USA        0
6653  420.00     USA        0
6654  500.00     USA        0
6655  500.00     USA        0
6656  390.00     USA        1
6657  450.00     USA        0
6658  420.00     USA        0
6659  420.00     USA        1
6660  450.00     USA        0

对于值1outlier列被视为outlier ,我想以可视化的value为各自国家的w / o考虑outliers 我应该提到,不应考虑DF的指数,我需要为各个国家/地区放置自己的指数。 为了澄清,DF索引2是针对美国的数据(2 86.83 USA 0) ,它将是US的索引zero数据。 索引2个数据为China将是(3 112.15 CHINA 0)等。

我尝试使用该代码段,但未按预期工作。

import matplotlib.pyplot as plt
df.plot.bar()
df.plot()
plt.show(block=True)

如何正确地做到这一点?

我认为您可以首先过滤outlier1值,然后通过数据pivot重塑数据框:

df = df[df.outlier == 1]
df['g'] = df.groupby('country').cumcount()

df = df.pivot(index='g', columns='country', values='value')
print (df)
country   CHINA    USA
g                     
0        114.32  390.0
1        117.22  420.0

df.plot()

另一种解决方案是groupbyunstack

df = df[df.outlier == 1]
df = df.groupby('country')['value'].apply(lambda x: pd.Series(x.values)).unstack(0)

print (df)
country   CHINA    USA
0        114.32  390.0
1        117.22  420.0

df.plot()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM