gpt4 book ai didi

python - 从数据透视表中删除零值会以某种方式产生另一个问题

转载 作者:行者123 更新时间:2023-12-05 05:40:29 24 4
gpt4 key购买 nike

我的 Python 课上有一项任务是挖掘一组数据,这些数据包含从 1960 年到 2011 年(几乎)世界上所有国家/地区的二氧化碳排放量。我一直在做的任务之一是生成一条线代表特定国家/地区二氧化碳产量增长的图表,我想避免在图表中插入零。这是我一直在使用的代码。

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sn
import numpy as np

# Creating DataFrame
Data = pd.read_excel('CO2 Sorted Data.xlsx')
df = pd.DataFrame(Data, columns=['Year','CountryName','Region','IncomeType','CO2Emission','CO2EmCMT'])
df.replace(0,np.nan,inplace=True)
print(df)

# Creating the Pivot Table
pvt = df.pivot_table(index=['Year'],columns=['CountryName'],values='CO2Emission',aggfunc='sum')

# Creating the Graph
pvt2 = pvt.reindex()
CO2Country = input('Input Country Name = ')
remove_zero=pvt2[CO2Country]
rz1=[i for i in remove_zero if i !=0]
plt.plot(rz1,c='red')
plt.title('CO2 Emission of ' +CO2Country +' (1960-2011)', fontsize=10)
plt.xlabel('Year',fontsize=10)
plt.ylabel('CO2 Emission (kiloton)')
plt.grid(True)
plt.show

例如,如果我输入 Aruba,输出将如下所示。 Line Graph of Aruba

但是,x 轴仅显示所请求数据的“年数”,而不是年份本身。除了将零更改为 NaN 之外,我不知道是什么触发了这种情况,但这在我看来没有任何意义。如何让 x 轴显示真实的年份,如 1986-2011 年?

这里是数据的一瞥: A little bit of the data

最佳答案

要获得正确年份格式的输出,您必须先枚举数据。

所以:data = list(enumerate(rz1, start=1960))

有多种方法可以绘制这些新数据,一种是将数据转换为 np 数组并转置,另一种是使用 zip 函数。它们都有相同的输出。

data = list(zip(*b))

data = np.array(data).transpose()

最终代码(在创建图表部分)是:

# Creating the Graph
pvt2 = pvt.reindex()
CO2Country = 'Aruba'

remove_zero=pvt2[CO2Country]
rz1=[i for i in remove_zero if i !=0]
data = list(enumerate(rz1, start=1960))
# data= np.array(data).transpose()

data= list(zip(*data))
plt.plot(data[0], data[1],c='red')

s/n: 调用plt.show(),而不是plt.show

关于python - 从数据透视表中删除零值会以某种方式产生另一个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72412418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com