Pandas数据框绘制折线图

4

I have the following DataFrame

| name | number | value | 
|------|--------|-------| 
| a    | 1      | 13    | 
| a    | 2      | 18    | 
| a    | 3      | 54    | 
| b    | 1      | 1     | 
| c    | 1      | 135   | 
| c    | 2      | 153   | 
| c    | 3      | 512   | 
| d    | 1      | 36    | 
| d    | 2      | 74    | 
| d    | 3      | 209   | 
| e    | 1      | 108   | 
| e    | 2      | 150   | 
| e    | 3      | 339   | 
| f    | 1      | 27    | 
| f    | 2      | 41    | 
| f    | 3      | 177   | 
| g    | 1      | 102   | 
| g    | 2      | 102   | 
| g    | 3      | 360   | 
| h    | 1      | 1     | 
| i    | 1      | 1     | 

我希望你能帮我完成两件事...

  1. 对于“姓名”列中仅出现一次的任何行,我希望将其从表格中删除,以便我的输出结果是删除了'b'、'h'和'i'行。

  2. 然后,我希望制作一条折线图,其中数字在x轴上,名称在y轴上,横跨的线是值,我画了一个简单的示意图,以说明我的意思(每条线的颜色都不同以相应名称)。

enter image description here

2个回答

2
你要求的格式有些繁琐。以下是一个简单的示例:

您正在请求相当多的格式。但这里有一个简单的例子:

import io
import pandas as pd
import matplotlib.pyplot as plt

string = u"""number,name,value
a,1,13
a,2,15
a,3,18
b,1,1
c,1,17
c,2,21
"""

df = pd.read_csv(io.StringIO(string))

# Remove uniques with boolean indexing
df = df[df.duplicated('number',keep=False)]

#https://dev59.com/2FgR5IYBdhLWcg3wT7tL
df.set_index('name', inplace=True)
df.groupby('number')['value'].plot(legend=True)

plt.show()

enter image description here


0

对DataFrame进行透视并绘图

df[['number', 'value']] = df[['number', 'value']].astype(int)
name_cnt = df.groupby('name').size()
required_nm = name_cnt[ name_cnt != 1].index
required_rows = df.loc[df.name.isin(required_nm)]  # select non repeating row in 'name' columns

required_rows.pivot(columns='name', index='number', values='value').plot()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接