pd笔记

124 阅读3分钟

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,效果作用列,列数发生变化,效果自左向右