pandas指南
DataFrame与Series
Series, 单独的一列/一行内容。
DataFrame, 单独的一列/一行内容,多列/多行内容/整个表格。
创建一个DataFrame test
import pandas as pd
test=pd.DataFrame([{'uid':1,'id':2},{'uid':3,'id':4},{'uid':5,'id':6}])
读取与导出数据
converters参数
读取时dataframe容易将excel的文本字段改为数值类型,用dataframe的dtype属性来查看个字段类型并修改。
1) 读取阶段,修改【规定】一个字段的类型,使用converters
data = pd.read_excel(r'例子.xlsx',converters={'uid': str}
将例子里的uid列改为str
2) 修改多个字段的类型
data = pd.read_excel(r'例子.xlsx',converters={'id':str,'uid':str})
将例子里的uid和id列改为str
筛选数据内容
pandas提供选择、切片、条件筛选的方法来获取数据。
2. 通过bool索引的方式筛选想要的行【比较运算符】,[]会返回判读为true的行
1) 判断弹幕出现的时间大于 19:45 (1185s)的行目,返回的是各行对应的布尔值。
data['progress'] > 1185000 = where progress > 1185000
2) 再选择出为true的行
data[data['progress'] >1185000] = select * from data where progress >1185000
3. 通过bool索引的方式筛选想要的行【与 &、或运算符】
1) 筛选19:45~20:00(1185s~1740s)
data[data['progress']>1185000 & data['progress']<1740000]
select * from data where progress >1185000 and progress < 1740000
4. bool索引
选择出一列数据进行条件判断,最后再用[]来嵌套筛选出为true的行
5. iloc
使用iloc选择索引数对应的值或具体某个值,相当于limit
data.iloc[0] = select * from data limit 1
data.iloc[1:4] = select * from data limit 1,3
[1:4]能取到索引数1,取不到索引数4,索引数1实际是第2行数据
[1:4]从第2行数据开始,取3条数据 limit 1,3 从第2行开始,取3条数据
注意:python的索引的初始值从0开始
6. for循环
1) 基本上使用索引来访问数据的内容,利用for循环来做批量操作
for i in range(len(data)):
print(data['id']).iloc[i])
2) 同样用遍历元素的方法也能访问:
for danmu_id in data['id']:
print(danmu_id)
7. 数据去重
调用drop_duplicates()方法,并将需要去重的列作为参数传入
data.drop_duplicates(subset='列名',keep='first',inplace='True')
参数:
subset:输入要去重的列名,默认为None
keep: 可选参数,‘first’,'last',False,默认‘first’
first: 表示保留第一次出现的重复行,删除后面的重复行
last: 表示删除重复项,保留最后一次出现
False: 表示删除所有重复项
inplace: 布尔值,默认False
'True': 不创建新的对象,直接对原始对象进行修改
‘False’: 对数据进行修改,创建并返回新的对象承载其修改结果
数据合并与连接
pandas类似于sql的连接、合并操作,可以横向、纵向拼接多份数据
1. 轴 axis
1) 当参数指定axis=0,效果作用行,行数发生变化,效果自上而下
2) 当参数指定axis=1,效果作用列,列数发生变化,效果自左向右