栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pandas知识点与实例

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pandas知识点与实例

知识点1:select&from
pandas注释
df.column / df[cloumn]选取列;当选取多列是采用嵌套列表形式[[‘x’ , ‘y’]]
df = pd.read_csv(参数)path:指明所需读取表格所在的文件路径。若不在同一文件夹,需要右键表格属性,查看表格路径,在文件路径前加r; sep:分隔符,常见为逗号,如sep=“,”; usecols:返回指定的列,如usecols=[“曝光数”,进店数]
df = pd.read_excel(参数)sheet_name:指定要读取的sheet,如sheet_name=‘sheet2’; index_col:指定菜列为索引,如index_col=‘日期’; usecols:返回指定的列,如usecols=[“曝光数,”'进店数]
pd.unique(df.column对单个字段去重,如unique(cpc.日期)
pd.drop_duplicates()对多个字段去重,如drop_duplicates([“曝光数,”'进店数])。若对整个DataFrame去重,如cpc.drop_duplicates()
import numpy as np
import pandas as pd
import pymysql

# 显示最大行列到9999 即显示所有行列 不然会以省略号展现
pd.set_option('display.max_rows', 9999)
pd.set_option('display.max_columns', 9999)
# 显示小数位数是3位
pd.set_option('display.float_format', lambda x: '%.2f' % x)

# 读取数据
cpc = pd.read_csv('./cpc.csv', sep=',', encoding='gbk')

# 筛选门店名称且去重 选字段-->去重-->以Series格式返回
name_unique = pd.Series(pd.unique(cpc['平台门店名称']))
# print(name_unique)

# 筛选出平台门店名称以及计算下单率(门店下单量/门店访问量)
# round函数是将数字四舍五入至合适的小数位数
# map函数通过将指定的function函数依次作用在给定序列iterable中的每一个元素上,可用于类型转换
cpc['符号'] = '%'
cpc['下单率'] = (round(cpc.门店下单量 / cpc.门店访问量, 1)*100).map(str)
cpc['下单率'] = cpc['下单率'].str.cat(cpc['符号'])
print(cpc['下单率'])

Series.str的方法:
cat()用于拼接字符串,拼接内容要是列表形式 且列表个数个待拼接的列表个数要一致

知识点2:where条件筛选
pandas注释
df.query(‘column>x’)通过字符串表达式对列进行筛选
df[df.column.between(x,y)]
df[df.column.isin([x,y,z,…])]判断指定字段中的值是否包含在所传入的列表中,并返回布尔值的Series
df[df.column.isnull()]检测字段缺失值
df.query(‘x&表示与,一杠表示或
# 查找gmvroi>7 且 gmvroi<8的门店ID和名字
query_gmvroi = cpc.query('gmvroi>7.0 & gmvroi<8.0')[['门店ID', '平台门店名称']]# 选取多列要用嵌套方括号

# 查找门店gmvroi等于[7,8]的门店ID和名字
query_gmvroi2 = cpc[['门店ID', '平台门店名称']][cpc.gmvroi.isin([7.0, 8.0])]
# 下面写法是错的 cpc.gmvroi.isin([7.0, 8.0])返回的是布尔值不能再索引了
# query_gmvroi3 = cpc.gmvroi.isin([7.0, 8.0])[['门店ID', '平台门店名称']]


# 模糊查询 like:查找名称带有宝山的门店
# 下面两行返回的是布尔值
# name = cpc['平台门店名称']
# name_baoshan = name.str.contains('宝山')

name_baoshan = cpc['平台门店名称'][cpc.平台门店名称.str.contains('宝山')].unique()
# print(name_baoshan)
# cpc[”平台门店名称’]: select 平台门店名称
# []内cpc: from
# 平台门店名称.str.contains(宝山'):平台门店名称like '%宝山%’
# unique(): distinct
# pd. Series:将结果转换为Series类型 pd. Series(cpc['平台门店名称'][cpc.平台门店名称.str.contains('宝山')].unique()) 不加类型转换生成列表
知识点3:聚合函数
# 查找各个门店的平均实收
avg_store = cpc.groupby('平台门店名称').agg(平均实收=('门店实收', 'mean'))
# cpc: from
# groupby ('平台门店名称’): group by平台门店名称
# agg(平均实收=(门店实收', 'mean')): avg(门店实收)as 平均实收
# 最终结果会显示所有提到的字段

# 查找实收>10k的门店名称 与 实收,按实收降序
store = cpc.groupby('平台门店名称').agg(总和=('门店实收', 'sum')).query('总和>10000').sort_values(by= '总和', ascending=False)
知识点4:子查询

先做出子查询的筛选条件
a = df1.query(“value1 == x”)[‘value1’]
再将条件放入isin()方法中
b = df2[‘column’][df2[‘value2’].isin(a)]
————————————
SQL语句相对应:
select column from df2
where value2 in (select valuel from df1 where valuel = x)

# 查找实收(cpc.csv)> 1K的门店名称
# 子查询条件
a = cpc.query('门店实收>1000').门店ID
#将条件放入isin中
b = cpc['平台门店名称'][cpc['门店ID'].isin(a)].unique()
知识点5:表格的合并

合并表格

# 合并Excel表格
#当想要合并不同的Excel表格(注意,要保证每个Excel表格的字段相同哦>import numpy as np
import os

# 1、path:选择Excel表格所在路径
path = './test/'
# 2、files = []:创建一个空列表,将路径中,文件or文件夹的名字装入列表print(files)
files = [i for i in os.listdir(path)]
# 3、查看是否正确,如:['test1','test2']
print(files)

# 4、创建一个空的DataFrame
Merge = pd. DataFrame()
# 5、for:循环遍历我们的名称列表(2)
for i in files:
    # 6、read_excel (path+i):读取第files[i]份表格。如当i=0, files[0]='sheet'
    df = pd.read_excel(path+i)
    # 7、concat:将df内容拼接至.Merge内
    Merge = pd.concat([Merge, df])

# 8、to_excel:遍历结束后,输出我们合并后的表格
Merge.to_exce1(path+'excel合并.xlsx', index=None)

合并一个表格的sheet

# 当想要合并同一张Excel装格内的所有sheet(注意:要保证每个sheet的子段相同哦)
# 1、ExcelFile:传入Excel表格
name_list = pd.Exce1Fi1e(' ./test/学习名单3.x1sx')
# 2、创建一个空DataFrame
df_list = pd. DataFrame()
# 3、for:循环遍历我们的名称列表(⑴
for sheet in name_list.sheet_names:
    # 4、name_list的属性parse:读取sheet中的内容
    df = name_list.parse(sheet_name=sheet)
    # 5、apperxl:我们将读取到的sheet内容,附加到df_list中
    df_list=pd.concat([df_list, df])

# 6、将df_list中的内容按行合并,输出
df_list.to_exce1('./test/sheet合并.x1sx' ,index=False)
# ExcelFile():传入一个表格的路径,并赋予一个对象。
# sheet_names:他是ExcelFile()的一个方法,将Excel子工作表的名字以列表形式返回#parse:他是ExcelFile()的一个方法
# 参数sheet_name:传入子工作表的名称,可以读取里面的内容

Series.str的用法参考https://blog.csdn.net/yishail/article/details/106960500

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1037496.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号