Pandas 是为了解决数据分析任务而创建的,纳入了大量的库和标准数据模型,提供了高效地操作大型数据集所需的工具。
首先要导入 Pandas 包:
from pandas import Series,DataFrame
import pandas as pd
我们必需熟悉它的两个重要的数据结构: Series 和 DataFrame。虽然它们不是每一个问题的通用解决方案,但可以提供一个坚实的,易于使用的大多数应用程序的基础。
Series 是一个一维的类似的数组对象,包含一个数组的数据(任何 NumPy 的数据类型)和一个与数组关联的数据标签,被叫做索引 。最简单的 Series 是由一个数组的数据构成:
In [1]:obj=Series([4,7,-5,3])
In [2]:obj
Out[2]:
0 4
1 7
2 -5
3 3
Series 的交互式显示的字符串表示形式是索引在左边,值在右边。因为我们没有给数据指定索引,一个包含整数 0 到 N-1 这里 N 是数据的长度)的默认索引被创建。你可以分别的通过它的 values 和 index 属性来获取 Series 的数组表示和索引对象:
In [3]: obj.values
Out[3]:array([4,7,-5,3])
In [4]: obj.index
Out[4]:Int64Index([0,1,2,3])
通常,需要创建一个带有索引来确定每一个数据点的 Series。
In [5]:obj2=Series([4,7,-5,3],index=['d','b','a','c'])
In [6]:obj2
Out[6]:
d 4
b 7
a -5
c 3
如果你有一些数据在一个 Python 字典中,你可以通过传递字典来从这些数据创建一个 Series,只传递一个字典的时候,结果 Series 中的索引将是排序后的字典的键。
In [7]:sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
In [8]:obj3=Series(sdata)
In [9]:obj3
Out[9]:
Ohio 35000
Texas 71000
Oregon 16000
Utah 5000
DataFrame 是一个表格型的数据结构,是以一个或多个二维块存放的数据表格(层次化索引),DataFrame 既有行索引还有列索引,它有一组有序的列,每列既可以是不同类型(数值、字符串、布尔型)的数据,或者可以看做由 Series 组成的字典。
创建DataFrame
dictionary = {'state':['0hio','0hio','0hio','Nevada','Nevada'],
'year':[2000,2001,2002,2001,2002],
'pop':[1.5,1.7,3.6,2.4,2.9]}
frame = DataFrame(dictionary)
修改行名
frame=DataFrame(dictionary,index=['one','two','three','four','five'])
添加修改
frame['add']=[0,0,0,0,0]
添加 Series 类型
value = Series([1,3,1,4,6,8],index = [0,1,2,3,4,5])
frame['add1'] = value
添加新列
1、直接在后面新增一列
指明列名,并赋值即可:
data[‘列名’]=[1,2]
2、在指定位置新增一列
用insert()函数,data.insert(位置,列名,列值),例如:
data.insert(2,‘c’,’’)
# Reading a csv into Pandas.
# 如果数据集中有中文的话,最好在里面加上 encoding = 'gbk' ,以避免乱码问题。后面的导出数据的时候也一样。
df = pd.read_csv('uk_rain_2014.csv', header=0)
这里我们从 csv 文件里导入了数据,并储存在 DataFrame 中。这一步非常简单,你只需要调用 read_csv 然后将文件的路径传进去就行了。
header
关键字告诉 Pandas 哪些是数据的列名。如果没有列名的话就将它设定为 None
。
数据导入 pandas 之后,我们该怎么查看数据呢?
查看前 n 行
# Getting first x rows.
df.head(5)
查看后 n 行
# Getting last x rows.
df.tail(5)
查看总行数
# Finding out how many rows dataset has.
len(df)
修改列名
我们通常使用列的名字来在 Pandas 中查找列。这一点很好而且易于使用,但是有时列名太长,我们需要缩短列名。
# Changing column labels.
df.columns = ['water_year','rain_octsep','outflow_octsep','rain_decfeb', 'outflow_decfeb', '