【python】pandas常用函数

0 前言

自用笔记,写得比较简单。

1 打开和保存

1.1 打开文件

读取csv文件

df = pd.read_csv('数据源/门店数据.csv',encoding='gbk')

读取excel文件

df = pd.read_excel('数据源/门店数据.xlsx')

指定读取A到Q列,指定某列的数据类型

df = pd.read_excel('数据源/门店数据.xlsx', usecols = 'A:Q', dtype={'门店名称':'str','门店编号':'str'})

不自动将第1行作为表头header=None
注:读取csv文件需要指明encoding

1.2 保存文件

直接导出并去除index

df.to_excel('数据汇总.xlsx', index=None)

将多个dataframe保存到同一个excel文件的不同个sheet中

xlsx = pd.ExcelWriter(r'数据汇总.xlsx')
df1.to_excel(xlsx, sheet_name='表1', index=None)
df2.to_excel(xlsx, sheet_name='表2', index=None)
df3.to_excel(xlsx, sheet_name='表3', index=None)
xlsx.close()

2 列相关操作

2.1 删除某列

删除'门店名称'列

del df['门店名称']

2.2 增加某列

方法1:
在第0列插入列名为'销售额'的列,该列所有值为1000(这里也可以是整数、Series或者数组型),如果原表中已有'销售额'也可以重复插入

df.insert(0, '销售额', 1000, allow_duplicates=True)

方法2:
如果不纠结插入在第几列,且数组sales长度与df长度一致则可以直接

df.loc[:,('销售额')] = sales

2.3 重新命名列

将'门店编号'重命名为'A','门店名称'重命名为'B','销售额'重命名为'C'

df.rename(columns={'门店编号':'A', '门店名称':'B'}, inplace=True)

2.4 修改列的顺序

order = ['门店编号', '门店名称', '销售额']
df = df[order]

3 查询

逻辑操作符:& | ~
查询销售额在1000到3000之间的门店名称和门店编号

df[(df['销售额']<=3000) & (df['销售额']>=1000)][['门店名称', '门店编号']]

4 行相关操作

4.1 删除某行

删除index=0的数据

df.drop(index=0, inplace=True)

4.2 依据条件删除多行

方法1:
删除销售量为空的数据

# 重新标注index,使得index与i一致
df.reset_index(drop=True, inplace=True)
delIndex=[]
for i in range(len(df)):
    if (pd.isnull(df.iloc[i]['销售量'])==True):
        delIndex.append(i)
df.drop(index=delIndex, inplace=True)

方法2:
删除门店编号为'001'的数据

df.drop(index=data[data['门店编号'] == '001'].index[0], inplace=True)

4.3 增加行

df.loc[1]=[ '001', '人民广场店', 8000 ]

loc和iloc的区别:loc利用index的名称,iloc利用index的具体位置(所以只能是整数型参数)

5 修改值

将门店编号为'001'的数据的C列(列名为'C')的值修改为200

df.C[df['门店编号']=='001'] = 200

6 计算

df['销售额'].mean() # 销售额平均值
df['销售额'].sum() # 销售额之和
df[df['销售额']<1000].count() # 销售额低于1000的数量

其他常用的有describe() 描述数据的大致情况, max()、min()最大最小值

7 合并两个表

依据'门店编号'连接df1和df2,连接方式为左连接,即保留df1中的所有数据,注意df2数据是否重复

df1.merge(df2 ,how='left' ,on='门店编号')

在df1后追加df2

df1 = df1.append(df2)

8 判断in、not in

a是df的一个表头,delSer是一个list或者set
df[df.a.isin(delSer)]

posted @ 2022-02-13 21:38  食言Siyee  阅读(241)  评论(0)    收藏  举报