将 csv 中对象形式的数据转换为数据透视表
Posted
技术标签:
【中文标题】将 csv 中对象形式的数据转换为数据透视表【英文标题】:convert data that is in the form of object in a csv to a pivot 【发布时间】:2019-01-27 13:27:59 【问题描述】:我有一个不美观且不可搜索的文件,因此我以 csv 格式下载了它。它包含 4 列和 116424 行。 我无法将其三列(即年份、年龄和比率)绘制到热图上。 csv 文件的链接是:https://gist.github.com/JustGlowing/1f3d7ff0bba7f79651b00f754dc85bf1
import numpy as np
import pandas as pd
from pandas import DataFrame
from numpy.random import randn
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_csv('new_file.csv')
print(df.info())
print(df.shape)
couple_columns = df[['Year','Age','Ratio']]
print(couple_columns.head())
错误
C:\Users\Pranav\AppData\Local\Programs\Python\Python36-32\python.exe C:/Users/Pranav/PycharmProjects/takenmind/Data_Visualization/a1.py 回溯(最近一次通话最后): RangeIndex:116424 个条目,0 到 116423 文件“C:/Users/Pranav/PycharmProjects/takenmind/Data_Visualization/a1.py”,第 12 行,在 数据列(共4列): Couple_columns = df[['Year','Age','Ratio']] AREA 116424 非空对象 getitem 中的文件“C:\Users\Pranav\AppData\Roaming\Python\Python36\site-packages\pandas\core\frame.py”,第 2682 行 YEAR 116424 非空 int64 AGE 116424 非空对象 RATIO 116424 非空对象 数据类型:int64(1),对象(3) 内存使用量:2.2+ MB 没有 (116424, 4) 返回 self._getitem_array(key) _getitem_array 中的文件“C:\Users\Pranav\AppData\Roaming\Python\Python36\site-packages\pandas\core\frame.py”,第 2726 行 indexer = self.loc._convert_to_indexer(key, axis=1) _convert_to_indexer 中的文件“C:\Users\Pranav\AppData\Roaming\Python\Python36\site-packages\pandas\core\indexing.py”,第 1327 行 .format(掩码=objarr [掩码])) KeyError: "['Year' 'Age' 'Ratio'] 不在索引中"
【问题讨论】:
【参考方案1】:在您的实际数据开始之前,csv 在前 8 行中有一些文本。您可以使用 skiprows
参数跳过这些
df = pd.read_csv('f2m_ratios.csv', skiprows=8)
假设您只想为一个区域绘制热图
df = df[df['Area'] == 'Afghanistan']
在绘制热图之前,您需要某种格式的数据(数据透视表)
df = df.pivot('Year','Age','Ratio')
现在您的数据框已准备好用于热图
sns.heatmap(df)
【讨论】:
【参考方案2】:信息输出中的列似乎是大写的:YEAR 116424 non-null int64
。你应该能够得到例如带有df[['YEAR']]
的年份列。
如果您想使用小写,可以使用df = pd.read_csv('new_file.csv').rename(columns=str.lower)
【讨论】:
我想创建一个数据透视表数据框,其中 x 轴为年份,y 轴为年龄范围,单元格内填充性别比例。然后使用 seaborn 为刚刚创建的数据透视表绘制热图。以上是关于将 csv 中对象形式的数据转换为数据透视表的主要内容,如果未能解决你的问题,请参考以下文章