Python Pandas DataFrame

本文介绍了Python Pandas DataFrame的创建、查询、增删改操作,重点讲解了如何使用loc进行筛选,replace和rename方法进行数据修改,以及数据透视表pivot_table的使用,并探讨了DataFrame写入Excel的两种方法。
import pandas as pd

一、创建DataFrame

1. 新建DataFrame

df = pd.DataFrame(data = [['Sisyphus', 'male', 'D'],
                          ['Athena', 'female', 'B'],
                          ['Zeus', 'male', 'A'],
                          ['Hera', 'female', 'C'],
                          ['Lucifer', 'male', 'B']],
                  columns = ['name', 'gender', 'rank'],
                  index = [0, 1, 2, 3, 4])
dic = {'name': ['Sisyphus', 'Athena', 'Zeus', 'Hera', 'Lucifer'],
       'gender': ['male', 'female', 'male', 'female', 'male'],
       'rank': ['D', 'B', 'A', 'C', 'B']}

df = pd.DataFrame(dic)
namegenderrank
0SisyphusmaleD
1AthenafemaleB
2ZeusmaleA
3HerafemaleC
4LucifermaleB

2. 读取excel/csv

df = pd.read_excel('test.xlsx', sheet_name = 'test_sheet')
df = pd.read_excel('test.xlsb', sheet_name = 'test_sheet', engine = 'pyxlsb')
df = pd.read_csv('test.csv')

二、DataFrame查询

1. 概览

df.head(n) # 返回前n行,DataFrame类型
df.tail(n) # 返回后n行,DataFrame类型
df.sample(n) # 随机返回n行样本,DataFrame类型

df.ndim # 返回DataFrame的列数
df.size # 返回DataFrame的值个数
df.shape # 返回DataFrame的行列数,Tuple类型
df.dtypes # 返回DataFrame的数据类型
df.axes # 返回DataFrame的行列标签信息

df['col'].sum()
df['col'].mean()
df['col'].count()
df['col'].max()
df['col'].min()
df['col'].describe() # 返回DataFrame的基本统计数据,标准差、中位数等

2. 筛选

(1). loc

df.loc[<索引表达式>, <列表达式>]
df.loc[0] # 指定索引值index = 0的行
df.loc[[0, 2]] # 指定索引值index = 0和index = 2的行
df.loc[0: 2] # 指定索引值index从0到2的行

df['name'] # 指定列名为name的列
df.name # 指定列名为name的列

df.loc[df['name'] == 'Sisyphus'] # 指定name为Sisyphus的所有行所有列
df.loc[df['name'] == 'Sisyphus', 'gender'] # 指定name为Sisyphus的所有行的gender列
df.loc[df['name'] == 'Sisyphus', ['gender', 'rank'] # 指定name为Sisyphus的所有行的gender和rank列

df.loc[(df['gender'] == 'male') & (df['rank'] == 'B')] # 多条件筛选,且

df.loc[(df['rank'] == 'A') | (df['rank'] == 'B')] # 多条件筛选,或
rank = ['A', 'B']
df.loc[df['rank'].isin(rank)] # .isin,与上式等价

df.loc[df['name'].str.contains('s')] # .str.contains,指定name中包含字符's'的所有行所有列

三、增删改

1. 增

df['col'] = '' # 增添空列
df.loc[:, 'col'] = '' # 在最后一列后面增加空列

df.fillna('空值') # 给所有空值赋值
df['col'].fillna('空值') # 给col列的空值赋值

df.insert(0, 'col', 'value') # 在第0列插入名为col值为value的列

df.loc[3] = ['', '', '', ''] # 若原数据不包含第三行,则新增第三行,否则修改第三行

2. 删

axis - 判断行或列,0为行,1为列

df.drop([1,3],axis = 0,inplace = True) # 删除index值为1和3的两行

df.drop(['col'],axis = 1,inplace = True) # 删除col列

3. 改

(1). replace

to_replace - 被替换的值

value - 替代值

inplace - 是否改变原数据

regex - 是否识别正则表达式

全值替换(字符串替换成某值):

df.replace(to_replace=None, value=None, inplace=False, regex=False)

局部替换(字符串中的某值替换成某值):

.str.replace()中的inplace参数不可用,只能进行重新赋值

df = df.str.replace(to_replace=None, value=None, regex=False)

(2). rename

df.rename(columns={'col': 'COL'}, inplace=True) # 对col列进行重命名

四、数据透视表pivot_table

pt = df.pivot_table(index=['', ''], columns=['', ''], values=['', ''], aggfunc=[numpy.sum, numpy.mean], fill_value=0, margin=1)

index - 行

columns - 列

values - 值

aggfunc - 统计函数,默认为numpy.mean,可用字典为不同的值进行不同的计算

aggfunc = {'height': numpy.max, 'weight': numpy.min, 'score': numpy.mean}

fill_value - 填充空值

margin - 是否汇总,默认为0

pivot_table的索引类型为multiple index,不能进行类似pt['col']的操作

需要利用.reset_index()进行索引重置

pt = pt.reset_index()

五、写入Excel

1. to_excel输出

每次调用to_excel函数时,若输出文件已存在,会重新覆盖该文件

df.to_excel('/out.xlsx', sheet_name='output')

2. 利用ExcelWriter写入多个sheet

writer = pandas.ExcelWriter('/out.xlsx')
df.to_excel(writer, sheet_name='df')
pt.to_excel(writer, sheet_name='pt')
writer.save()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值