Pandas数据处理与分析
Pandas是基于NumPy的一种数据分析工具库。
一、数据结构与基本操作
目前Pandas主要提供两种数据结构:Series是带标签的一维数组;DataFrame是带标签且大小可变的二维数组。
1.1、Series基础
import numpy as np
import pandas as pd
#创建Series对象
s1 = pd.Series([1,3,4,np.nan,6,9])#使用np.nan表示空值
print(s1)
Series作为一维数组的存储单位,拥有两个属性:标签(index)和元素值(values)。
Series对象具有标签,就相当于python中的索引,默认情况下与python中的索引相同,但是可以指定索引。
#创建Series对象,并指定索引为 'ABCD'
s2 = pd.Series(np.arange(4),index=list('ABCD'))
#通过索引来获取对象的值
s2['C']
#运行结果
2
对Series进行算术运算即对Series中的每个数据进行相应的算数运算,但要注意运算后生成一个新的Series对象,元Series对象保持不变。
可以通过切片操作获取Series中特定位置的数据,构成新的Series对象。切片主要有三种方式:
- 通过标签来实现切片
- 通过位置索引来切片
- 通过条件获取元素切片
1.2、DataFrame基础
DataFrame是大小可变、多种类型元素可以混合、具有行列标签的二维数据,拥有index和colums属性
n = np.random.randint(low=0,high=10,size=(5,5))
df = pd.DataFrame(data=n,columns=list('ABCDE'))
print(df)
#运行结果
A B C D E
0 4 7 6 0 6
1 1 0 8 1 5
2 1 5 9 6 5
3 1 8 2 4 6
4 7 3 8 2 3
还可以使用字典创建DataFrame对象。
data = {
"province":['广东','山东','四川','湖北','江苏'],
"populations":[103332,23234,234545,6456546,12345],
"city":['广州','济南','成都','武汉','南京']
}
cc = pd.DataFrame(data)
print(cc)
#运行结果
province populations city
0 广东 103332 广州
1 山东 23234 济南
2 四川 234545 成都
3 湖北 6456546 武汉
4 江苏 12345 南京
DataFrame对象的相关属性
index属性表示行标签,columns属性表示列标签,dtype属性表示各列的数据类型,ndim属性表示数据维数,values属性表示构成DataFrame对象数据的NumPy数组。
DataFrame对象的整体情况查询
info()方法查询DataFrame对象的整体情况,包括行列数量、索引、列类型、内存占用情况等。head(n)方法查询最前面n行数据,默认为5行。tail(n)方法查询末尾n行数据,默认为5行。
设置DataFrame对象的行列标签
可以使用set_index生成新的DataFrame对象,原对象保持不变。
可以通过columns属性值来改变列标签。
获取DataFrame对象的行列标签
DataFrame对象的index属性返回行标签对象。可以从该对象获得行标签构成的列表。
可以通过to_list方法将其转换成列表。
还可以根据条件获取标签信息。
DataFrame对象的切片方式
- 通过列名和行号获取
- 通过布尔索引获取
- 通过行列标签切片
- 通过行列序号切片
二、文件与数据库中存取DataFrame对象
1、csv文件中存取DataFrame对象
2、Excel文件中存取DataFrame对象
3、数据库中存取DataFrame对象
三、常用函数与方法
1、用drop()删除指定的行或列
2、用append()添加元素
3、用unique()去除重复元素
4、使用Series.map()实现数据替换
5、使用apply()将指定函数应用于数据
6、用applymap()将指定函数应用于元素
......
四、DataFrame对象的数据清洗与处理
获得DataFrame对象后,数据清洗等预处理是数据分析前最重要一环。
数据清洗主要是删除重复值、处理缺失值、数据格式规范化等。
其实有很多方法,大家可以自行在网上查询。
五、时间处理
5.1、Python标准库中的时间处理
Python标准库中的calendar、datatime和time三个模块可以用来处理时间数据。
calendar模块中的类和函数主要用于处理与日历相关的数据。time模块中的类和函数主要用于处理与时间戳相关的数据。datatime模块提供了处理日期与时间的类和函数。
datatime模块包含date、time、datetime、timedelta、tzinfo和timezone六个类。
详细方法参考官方在线文档。
5.2、Pandas中的时间数据处理
Pandas中的Timestamp和Timedelta两个类在处理时间方面较好。
详细方法见官网。