【Pandas Tutorial】Lesson 1 数据读取和储存

【Pandas Tutorial】Lesson 1 数据读取和储存

本标签"Pandas Tutorial"是一个系列教程,将在后续几周全面介绍Pandas的各种用法,本文是整个系列教程的第一课,主要精简整理翻译自原文:Lesson 1,主要内容是教大家如何用pandas生成不同格式的文件以及如何读取这些文件。

生成DataFrame

首先先载入pandas包:

import pandas as pd 

之后我们创建一个DataFrame:

names = ['Bob','Jessica','Mary','John','Mel']
births = [968, 155, 77, 578, 973]
BabyDataSet = list(zip(names,births))
我们先是创建了names和births两个向量,然后将这两个向量通过zip函数合并,BabyDataSet现在是长这个样子的:
[('Bob', 968), ('Jessica', 155), ('Mary', 77), ('John', 578), ('Mel', 973)]

后,我们可以使用BabyDataSet创建一个DataFrame,命名为df:

df = pd.DataFrame(data = BabyDataSet, columns=['Names', 'Births'])
df

储存文件

接下来,我们可以用pandas.to_csv函数,把这个DataFrame存为一个csv文件,pandas里面存文件的函数名称基本都是这样一个格式,比如pandas.to_pickle等。这里有两个参数index和header,选False的话,index和columns的名称就不会存入文件。
df.to_csv('births1880.csv',index=False,header=False)

读取文件

存好了之后,我们就可以根据路径读取这个csv文件“births1880.csv”,读取文件的函数为pandas.read_csv,其他类型文件的读取函数也类似,比如pandas.read_pickle

Location = r'C:\Users\david\notebooks\update\births1880.csv'
df = pd.read_csv(Location)
df

我们看到,由于我们当时存储的时候header = False,在读取这个csv的时候也没有指定行名,所以python自动将每列第一个变量作为了DataFrame的列名,这显然是我们不愿意看到的。

为了改变这一情况,我们应该在read_csv的时候通过names属性申明列名是什么:

df = pd.read_csv(Location, names=['Names','Births'])
df

数据分析

在原文的最后,作者还简单介绍了一个DataFrame数据分析的小案例,其中的内容在后面都会有所涉及,先放在这里让大家简要了解一下:

import matplotlib.pyplot as plt

# Enable inline plotting
%matplotlib inline

#把df这个DataFrame里的Births列进行画图操作
df['Births'].plot()

#max()函数可以获取Births列的最大值
MaxValue = df['Births'].max()

#先用df['Births'] == df['Births'].max()获取到最大值那一行的索引,
#之后便可以在df['Names']列中用同一个索引找到对应的行,最后通过values属性获取具体的name值

MaxName = df['Names'][df['Births'] == df['Births'].max()].values

#生成将要在图片上显示的文字
Text = str(MaxValue) + " - " + MaxName

#把文字添加到图片上面
plt.annotate(Text, xy=(1, MaxValue), xytext=(8, 0), 
                 xycoords=('axes fraction', 'data'), textcoords='offset points')

#打印"The most popular name"与最大值
print("The most popular name")
df[df['Births'] == df['Births'].max()]

最后

想要了解关于R、Python、数据科学以及机器学习更多内容。

请关注我的专栏:Data Science with R&Python, 以及关注我的知乎账号:文兄

编辑于 2017-04-12

文章被以下专栏收录