从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表中获取特定“字符串”的相应单元格值以绘制线/散点图的主要内容,如果未能解决你的问题,请参考以下文章

从 Excel 工作表中查找并替换所有文本文件中的字符串

用c语言或者python将文件中特定字符串后面的数字相加

如何使用 Python 库工具在 Excel 工作表中选择特定范围的单元格

Python:如何快速创建仅包含大型 Excel 工作表中特定列的 pandas 数据框?

从 .txt 文件中拆分特定值并存储在 python 中的 excel 中?

从具有特定值的表中获取列名