【python】pandas模块快速介绍

目录

Series对象

DataFrame对象

加载数据

Excel工作表read_excel()

CSV文件read_csv()

读取DataFrame数据

查找和替换数据

删除与插入数据

补充

修改DataFrame对象的标签

DataFrame对象的属性

DataFrame对象的转置

转为树形结构

拼接


Series对象

可理解为带行标签得一维数组,行标签对应每一组元素,有三种声明方式:

  1. 不声明,默认序号
  2. 声明index参数设置序号
  3. 使用字典创建设置序号
import pandas as pda
# 使用默认序号
s1 = pda.Series(['一','二','三'])
# index设置序号
s2 = pda.Series(['四','五','六'], index=['001','002','003'])
# 字典设置序号
s3 = pda.Series({'001':'七', '002':'八', '003':'九'})

DataFrame对象

可理解带行标签和列标签的多维数组,同样有三种方式设置序号和列号:

  1. 使用默认的行列标签
  2. 参数columns设置列标签,参数index设置行标签
  3. 字典的键作为列号,值作为元素,再使用index设置行标签
import pandas as pda
# 使用默认序号
s1 = pda.DataFrame(['一',1], ['二', 2])
# index设置行,columns设置列
s2 = pda.DataFrame(['一',1], ['二', 2], columns=['标号','值'], index=['001', '002'])
# 字典设置列号和元素,index设置行
s3 = pda.DataFrame({'标号':'['一','二','三']'}, {'值':['1','2','3']},index=['01','02','03'])

加载数据

Excel工作表read_excel()

使用read_excel()读取工作表,返回一个DataFrame类型对象。参数sheet_name 指定读取哪个表,默认为0即第一个表;参数header 指定取第几行作为列标签,默认使用第一行;参数index_col 指定第几列作为列标签,默认为序号0~N;参数usecols 指定读取的列

import pandas as pda
# 读取excel文件,可用同目录的相对路径或绝对路径
# 指定读取序号2的表
# 指定使用第一行作为列标签
data1 = pda.read_excel('C:\Users\cnzha\Desktop\文档1.xlsx', sheet_name=2, header=0)

# 指定第一列作为行标签
# 只读取索引3的列
data2 = pda.read_excel('文档2.xlsx', sheet_name=1, index_col=0, usecols=[3])

# 读取索引1~10的列
data3 = pda.read_excel('文档2.xlsx', sheet_name=1, usecols=[1,10])

CSV文件read_csv()

使用read_csv()读取csv文件,使用第一行作为列标签。参数nrows控制读取的行数

import pandas as pda
# 读取前五行数据
data = pda.read_csv('文档.csv', nrows=10)

读取DataFrame数据

对于读取了数据文件后返回的DataFrame对象,使用 head() 指定查看数据的多行,默认前五行loc[] 可以读取多行数据,还可以使用表达式筛选指定的行/列数据;iloc[] 可以根据序号以类似切片的方式取出,不声明逗号则默认对行操作

import pandas as pda

data = pda.read_excel('文档2.xlsx', sheet_name=1)
print(data.head(2))    # 读取前10行数据    

# 条件筛选,筛选成绩列中小于60的行
pat = data['成绩']<60
print(data[pat])

# 输出指定列标签的列
print(data['学号'])
print(data['学号', '姓名'])

# loc[] 行标签读取
print(data.loc['001'])    # 输出标签为001的行
print(data.loc[['001', '005']])    # 输出标签为001与005的行
print(data.loc[['001','002'], ['姓名', '成绩']])    #输出001和002行的姓名与成绩列

# iloc[] 类似切片方式提取,以逗号分割行列
print(data.iloc[2])    # 提取序号2行
print(data.iloc[[1,3]])    # 提取序号1和3行
print(data.iloc[1:5])    # 切片,提取序号1至4行
print(data.iloc[:, 1:5])    # : 表示所有,提取所有行的列1 至 列4
print(data.iloc[:, [1,3]])    # 提取所有行的列1 和 列3

查找和替换数据

isin()可以查看DataFrame中是否包含某个值,可以查看数据中是否存在多个值或查看某一列/行是否存在某值。若存在,则返回的结果中该数据位置为Ture其余为false

replace(),以列表形式把多个值替换为某一个值,以字典形式把多个值按顺序换为多个值(即多组一对一替换)

import pandas as pda
data = pda.red_excel('文档1.xlsx')
# isin()查找的值以列表形式给出
stu1 = data.isin(['004','小明'])    #查找是否有004,小明这两个值
print(stu1)
stu2 = data['姓名']。isin(['小红'])    # 查找姓名列中是否有小红
print(stu2)
import pandas as pda
data = pda.red_excel('文档1.xlsx')
data.replace(80,70)    # 把80替换为70

data.replace([20, 30], 60, inplace=True)    # 把20与30替换为60,被替换的多个值由列表给出
# inplace=True 表示在当前数据更改,不产生新数据对象

# 字典给出多个值的替换,键为需要替换的,值为替换后的
data.replace({'小红':'小王', 59:60, 79:80}, inplace=True)

删除与插入数据

插入数据可有两个方式:

  1. 赋值,在最右侧插入列数据
  2. insert(),在数据表的指定位置插入列数据

删除数据:

drop(),删除指定的行/列,通过axis控制是修改行/列,不声明则默认对行操作。可以通过标签或序号指定行/列

import pandas as pda
data = pda.read_excel('文档.xlsx')
# 在数据表的最右列插入列'成绩'和数据
data['成绩'] = [60, 70, 80, 90]
# insert(),在序号2处插入班级列,列表形式给出该列数据
data.insert(2, '班级', ['一班', '二班', '一班', '一班'])
import pandas as pda
data = pda.read_excel('文档.xlsx')
# 删除列标签为'性别''年龄'的列
data1 = data.drop(['性别', '年龄'], axis=1)    # axis=1,对列操作
# 删除列序号为2,3的列
data2 = data.drop(data.columns[[2, 3]], axis=1)
# 删除行序号为1和3的行
data3 = data.drop(data.index[[1,4]], axis=0)    #axis=0,对行操作
# 删除行标签为001和003的行
data4 = data.drop(index=['001', '003'])

补充

修改DataFrame对象的标签

在读取文件时若不指定行/列标签,则默认取第一行左列标签,行标签为序号0~N。使用set_index()设置指定列作为行标签;rename()传入字典的形式重命名行标签和类标签;或者重新赋值columns和index属性

DataFrame对象的属性

shape属性可以查看数据的行列数量;info()可以查看数据的类型,dtype属性可以查看具体某一列的数据类型;astpye()可以改变指定列的数据类型。

DataFrame对象的转置

前面提到DataFrame对象可以类比多维数组,即也可以理解为矩阵的形式。同Numpy框架中一样,直接调用T属性可以实现转置,交换行列。

转为树形结构

在维持行标签不变的情况下,把列标签变为行标签,建立层次化索引。可以理解为:每行最左端作为索引,上下连接,其余每行元素左连接一直到本层的索引结点。也可以理解为用数组存一颗层次遍历的树。对象直接调用stack()函数即可。

拼接

  1. merge() 根据一个或多个相同列,连接不同数据表。默认合并相同列中的相同行,声明how='outer'则会合并所有数据,参数on指定依据哪一列进行合并
  2. concat() 直接合并多个数据表,不需要索引相同。合并后的需要不会从新开始,参数ignore_index=Ture可以重置新表的行标签
  3. append() 把表中的数据合并到其他表中。常用于在表尾追加元素

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值