如何用线图可视化pandas DataFrame?

时间:2017-03-10 03:48:17

标签: python 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

1列中outlier的值被视为outlier,我想在没有考虑{{1}的情况下为各个国家/地区显示value }}。我应该提到,outliers的索引不被考虑,我需要为各个国家编制自己的索引。为了澄清,DF索引2用于美国DF的数据,它将是美国的索引(2 86.83 USA 0)数据。 zero的索引2数据将为China,依此类推。

我曾尝试使用代码段,但它没有按预期工作。

(3 112.15 CHINA  0)

如何正确地做到这一点?

1 个答案:

答案 0 :(得分:1)

我认为您可以首先过滤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()

另一个解决方案是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()