我有一個xls文件,數據以長格式組織。我有四欄:變量名稱,國家名稱,年份和價值。Python,從長數據繪製熊貓的pivot_table
使用pandas.read_excel將Python中的數據導入後,我想繪製不同國家/地區的一個變量的時間序列。爲此,我創建了一個以寬格式轉換數據的數據透視表。當我試着使用matplotlib陰謀,我得到一個錯誤
ValueError: could not convert string to float: 'ZAF'
(其中「ZAF」是一個國家的標籤)
什麼問題?
這是代碼:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel('raw_emissions_energy.xls','raw data', index_col = None, thousands='.',parse_cols="A,C,F,M")
data['Year'] = data['Year'].astype(str)
data['COU'] = data['COU'].astype(str)
# generate sub-datasets for specific VARs
data_CO2PROD = pd.pivot_table(data[(data['VAR']=='CO2_PBPROD')], index='COU', columns='Year')
plt.plot(data_CO2PROD)
與原始數據XLS文件的樣子: raw data Excel view
這是我從data_CO2PROD.info()
得到<class 'pandas.core.frame.DataFrame'>
Index: 105 entries, ARE to ZAF
Data columns (total 16 columns):
(Value, 1990) 104 non-null float64
(Value, 1995) 105 non-null float64
(Value, 2000) 105 non-null float64
(Value, 2001) 105 non-null float64
(Value, 2002) 105 non-null float64
(Value, 2003) 105 non-null float64
(Value, 2004) 105 non-null float64
(Value, 2005) 105 non-null float64
(Value, 2006) 105 non-null float64
(Value, 2007) 105 non-null float64
(Value, 2008) 105 non-null float64
(Value, 2009) 105 non-null float64
(Value, 2010) 105 non-null float64
(Value, 2011) 105 non-null float64
(Value, 2012) 105 non-null float64
(Value, 2013) 105 non-null float64
dtypes: float64(16)
memory usage: 13.9+ KB
None
可以分享你的'xls'? – jezrael
剛剛在問題末尾添加了截圖 –
值「ZAF」在哪裏?只有在'COU'列中? – jezrael