[英]How to visualize the pandas DataFrame with line graph?
我有一个附带信息的pandas DataFrame
, df.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
对于值1
的outlier
列被视为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)
如何正确地做到这一点?
我认为您可以首先过滤outlier
是1
值,然后通过数据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()
另一种解决方案是groupby
与unstack
:
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.