从python语言的excel表中获取特定“字符串”的相应单元格值以绘制线/散点图
Posted
技术标签:
【中文标题】从python语言的excel表中获取特定“字符串”的相应单元格值以绘制线/散点图【英文标题】:Getting the corresponding cell value for a specific 'string' from excel sheet in python language for plotting a line/scatter plot 【发布时间】:2019-06-13 20:39:05 【问题描述】:我想在整个数据中为country name == 'Argentina'
与其对应的“值”绘制一个线/散点图。
样本数据
total data file
这是我的代码
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel("C:/Users/kdandebo/Desktop/Models/Python excercise/Data3.xlsx")
x = (df['Country Name'])
#Although i have figured out x cannot be compared to a string named Argentina, i couldnt think of any other way, Also ive tried the below version too, but none works
#if (df['Country Name'] == 'Argentina'):
# y = (df['Value'])
for x == ("Argentina"):
y = (df['Value'])
plt.scatter(x,y)
plt.show()
【问题讨论】:
编程的第一步很难,每个人都有不同的学习方式。然而,Python 有一个很大的优势,因为它很容易看到一个人试图做什么,因此自己可以看到哪里出了问题。你只需要 2 行来制作你想要的东西,1 行来读取 excel,1 行来制作情节,你可以通过 df.plot() 来完成。究竟你需要写什么,我会让你从与绘图相关的 pandas 文档中找出答案。如果你在 spyder 中,你可以使用调试器来查看你的代码实际做了什么,这是一种很好的学习方式。 xlsx 文件或需要的样本 您可以检查的一件事是当您编写for x == ('Argentina')
时会发生什么。我很确定这不会达到您的预期目标。
将整个文件添加为“总数据文件”
是的,我正在使用 Spyder,是的,我尝试过调试,但不清楚
【参考方案1】:
主要问题是读取电子表格文件并选择正确的表格
import pandas as pd
import matplotlib.pyplot as plt
xl = pd.ExcelFile("Data3.xlsx")
df=xl.parse("Data")
x = df[df['Country Name']=="Argentina"]
plt.scatter(x['Country Name'],x['Value'])
plt.show()
【讨论】:
你太棒了..这很有帮助【参考方案2】:此代码是自包含的,并提供了问题的答案。
import pandas as pd
df = pd.DataFrame('Series Name': ['GDP']*4,
'Country Name': ['Argentina']*2 + ['Bolivia']*2,
'Time': [2001, 2002, 2001, 2002],
'Value': [1, 3, 2, 4])
#print(df)
df[df['Country Name'] == 'Argentina'].plot.scatter('Time', 'Value')
此类问题的答案通常可以在示例或教程下的库文档中找到。
【讨论】:
thaanq 太好了,这是非常有用的替代方法【参考方案3】:在你开始制作情节之前,首先你应该提取关于阿根廷的数据。
import pandas as pd
import matplotlib.pyplot as plt
# Define the headers
headers = ["SeriesName", "CountryName", "Time", "Value"]
# Read in the Excel file
df_raw = pd.read_excel("C:/1/Data3.xlsx",header=None, names=headers)
# extract data to only Argentina
country = ["Argentina"]
# Create a copy of the data with only the Argentina
df = df_raw[df_raw.CountryName.isin(country)].copy()
#print(df)
解压后只能使用 Pandas 制作情节。
'''Pandas plot'''
df.plot.line(x='Time', y='Value', c='Red',legend =0, title = "ARGENTINA GDP per capita")
plt.show()
您也可以通过 Matplotlib 库和 Seaborn 或 Plotly 进行绘图。
# Create plot from matplotlib
plt.figure()
plt.scatter(df.Value, df.Time)
plt.xlabel('GPD Value')
plt.ylabel('Years')
plt.title('''ARGENTINA
GDP per capita (constant 2010 US$) ''')
plt.show()
enter image description here
Seaborn 剧情
import seaborn as sns
sns.scatterplot(x="Value", y="Time", data=df, color = 'DarkBlue')
plt.subplots_adjust(top=0.9)
plt.suptitle("ARGENTINA GDP per capita")
plt.show()
情节情节
import plotly
import plotly.graph_objs as go
trace = go.Scatter(x = df.Time, y = df.Value)
data = [trace]
plotly.offline.plot("data": data, filename='Argentina GDP.html')
【讨论】:
以上是关于从python语言的excel表中获取特定“字符串”的相应单元格值以绘制线/散点图的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Python 库工具在 Excel 工作表中选择特定范围的单元格
Python:如何快速创建仅包含大型 Excel 工作表中特定列的 pandas 数据框?