Python数据分析-合并清洗与转换(concat+lambda函数+apply+删除drop/替换数据replace)

数据导入

python 复制代码
# 读入"职工工资.xlsx"数据
import pandas as pd
gzdf = pd.read_excel("职工工资.xlsx")  # 读取职工工资信息
gzdf

拼接contact

axis=0 为默认按照行拼接(上下拼接)

axis=1(左右拼接)

python 复制代码
gzdf1=gzdf
pd.concat([gzdf,gzdf1],axis=1)# axis=1 将所有列拼接,保留全部列的信息即使重复
python 复制代码
# 标记每条记录来自于哪个表
pd.concat([gzdf,gzdf1],keys=['gzdf','gzdf1'],axis=1,names=['来源表','行索引'])# keys标记哪些列来自哪个表

lambda函数

python 复制代码
mySum = lambda a,b:a+b # 定义匿名函数,并将其赋值给变量mySum
print(mySum(10,20))     # 通过mySum调用匿名函数,并给匿名函数传入参数10和20
print(mySum(100,20))    # 通过mySum调用匿名函数,并给匿名函数传入参数100和200

apply

python 复制代码
import pandas as pd
# 构造一个DataFrame对象
data = [[1,2],[3,4],[5,6]]
df = pd.DataFrame(data,columns=list('男女'),index=list('abc'))
print(df)
# apply自动遍历整个DataFrame对象中所有元素
df.apply(lambda x : x*x) # 对整个DataFrame对象中所有元素执行函数计算
python 复制代码
# 对满足条件的数据应用apply()函数
df.apply(lambda x : x*x if x.name=='男' else x)

还可以axis=1按行,=0默认按列

python 复制代码
df.apply(lambda x:x.sum(),axis=1)# 按行求和
python 复制代码
df.apply(lambda x:x.sum())# 默认按列求和

Series也可以使用功能

进阶

python 复制代码
student['新成绩']=student['成绩'].apply( lambda x:"缺考" if pd.isna(x)==True
                                  else ("不及格" if x<60
                                  else "及格"))

删除列drop

python 复制代码
df.drop(['性别'],axis=1)# axis=1 删除列
df.drop([1,4])# 删除多行坐标为1 和4的行

df.drop([1,4]).reset_index()# 删除多行坐标为1 和4的行,之后重置序号

替换replace

进阶

对客户数据信息进行合理转换

按照通话时长将用户划分为三种:通话时长>平均通话时长 为 较多时间;< 为较少时间;空为未使用

python 复制代码
# 获取"通话时长"列的平均值
meanValue = df["通话时长"].mean()
meanValue
# 为"通话使用情况"列赋值
df["通话使用情况"] = df["通话时长"].\
                     apply(lambda x: "未使用" if (pd.isna(x)==True) \
                                           else ("较少时间" if x < meanValue \
                                                          else "较多时间" ))
df.head()  # 限于篇幅,显示前五行
相关推荐
Gofarlic_oms11 小时前
利用API实现ANSYS许可证管理自动化集成
运维·服务器·开发语言·matlab·自动化·负载均衡
AI+程序员在路上3 小时前
VS Code 完全使用指南:下载、安装、核心功能与 内置AI 编程助手实战
开发语言·人工智能·windows·开源
invicinble3 小时前
这里对java的知识体系做一个全域的介绍
java·开发语言·python
catchadmin3 小时前
使用 PHP TrueAsync 改造 Laravel 协程异步化的可行路径
开发语言·php·laravel
wbs_scy3 小时前
【Linux 线程进阶】进程 vs 线程资源划分 + 线程控制全详解
java·开发语言
AI人工智能+电脑小能手3 小时前
【大白话说Java面试题】【Java基础篇】第15题:JDK1.7中HashMap扩容为什么会发生死循环?如何解决
java·开发语言·数据结构·后端·面试·哈希算法
m0_674294644 小时前
如何编写SQL存储过程性能对比_记录执行时间评估优化效果
jvm·数据库·python
运气好好的4 小时前
怎样开启phpMyAdmin的操作审计日志_记录每条执行的SQL
jvm·数据库·python
郑州光合科技余经理4 小时前
同城O2O海外版二次开发实战:从支付网关到配送算法
开发语言·前端·后端·算法·架构·uni-app·php
2401_871492855 小时前
Layui如何修改Layui默认的UI主题颜色(换肤功能实现)
jvm·数据库·python