Python数据分析--Pandas知识点(1)

本文详细介绍了数据清洗与处理的多种方法,包括重复值、缺失值的处理,数据类型的查看与修改,字段的抽取、拆分与合并,以及记录的抽取与合并。通过具体实例演示了如何使用Python的pandas库进行高效的数据预处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 重复值的处理
利用drop_duplicates()函数删除数据表中重复多余的记录, 比如删除重复多余的ID.

    import pandas as pd
    df = pd.DataFrame({'ID':["A1000","A1001","A1002", "A1002"], 'depatID':[60001,60001, 60001, 60001]})
	print(df)
	print(df.drop_duplicates()) # 去重

在这里插入图片描述
2. 缺失值的处理
缺失值是数据中因缺少信息而造成的数据聚类,分组和截断

缺失值的处理方式通常有三种: 补齐缺失值, 删除缺失值保留缺失值.
1)补齐缺失值:使用计算出的值去填充缺失值,如平均值,众数

	import pandas as pd
	import numpy as np
	df = pd.DataFrame({'ID':['A10001', 'A10002', 'A10003', 'A10004'], "Salary":[11560, np.NaN, 12988,12080]})
	df['Salary'] = df['Salary'].fillna(df['Salary'].mean()) # 平均数
	# df['Salary'] = df['Salary'].fillna(df['Salary'].mode()[0]) 众数
	# df['Salary'] = df['Salary'].fillna(df['Salary'].median()) # 中位数
	print(df)

填充后
2)删除缺失值:当数据量大时且缺失值占比较小可选用删除缺失值的记录
采用dropna函数对缺失值进行删除

df = pd.DataFrame({'pass':['a1','a2','a3','a4'],'name':['ming', 'hong',pd.NaT, 'li']})
print(df)
print(df.dropna())

删除后删除前
3)保留缺失值

3.删除前后空格
使用strip()函数删除前后空格

df = pd.DataFrame({'pass':['a1','a2','a3','a4'],'name':['ming', 'hong',' ke ', 'li']})
print(df)
df['name'] = df['name'].str.strip()
print(df)

在这里插入图片描述
4.查看数据类型
查看所有类用dtypes, 单列用dtype
df = pd.DataFrame({‘pass’:[11, 22, 33, 44],‘name’:[‘ming’, ‘hong’,’ ke ‘, ‘li’]})
df[‘name’] = df[‘name’].str.strip()
# 查看所有列的数据类型
print(df.dtypes)
print(’-’)
# 查看选定的单列的数据类型
print(df[‘name’].dtype)
在这里插入图片描述
5.修改数据类型
使用astype()函数对数据类型进行修改

df = pd.DataFrame({'pass':[11, 22, 33, 44],'name':['ming', 'hong',' ke ', 'li']})
df['name'] = df['name'].str.strip()
df['pass'] = df['pass'].astype(str) # 将原来的int类型转换为str类型

6.字段抽取
slice(start, end)函数可完成字段的抽取

    # 抽取name字段的前两位
    df['name'].str.slice(0, 2)

7.字段拆分
使用split()函数进行字段的拆分, split(pat=None, n = -1, expand=True)函数包含三个参数:
第一个参数则是分隔的字符串, 默认是以空格分隔
第二个参数则是分隔符使用的次数, 默认分隔所有
第三个参数若是True, 则在不同的列展开, 否则以序列的形式显示.

df = pd.DataFrame({"ID": [10, 11, 12],"name": ["Zhao.23","Qian.33","Sun.28" ]})
# 以**.**为分割点
df_new = df['name'].str.split('.', expand=True)

8.字段命名
有两种方式一种是使用rename()函数, 另一种是直接设置columns参数

#df_new = df_new.rename(columns={0:'username', 1:'age'})
df_new.columns = ['username', 'age']

重命名后

9.字段合并
使用merge函数对字段进行合并

#将pd和pd_new两个表合并 
df_up = pd.merge(df, df_new, left_index=True, right_index=True)

10.字段删除
drop函数对字段进行删除

df_up.drop('name', axis =1, inplace = True) # 删除name字段

删除字段前后
11.记录的抽取
1)关系运算:df[df.字段名 关系运算符 数值],

df_up['age'] = df_up['age'].astype(int)
print(df_up[df_up.age >25]) # 选取年龄大于25的记录

在这里插入图片描述
2)范围运算 :df[df.字段名.between(s1,s2)]

df_up['age'] = df_up['age'].astype(int)
print(df_up[df_up.age.between(20,30)]) # 选取在20到30之间的数据

在这里插入图片描述
3)逻辑运算: 与(&) 或(|) 非(not)

df_up[(df_up.age>30) & (df_up.age<40)]

4)字符匹配:df[df.字段名.str.contains(“字符”, case = True, na =False)] contains()函数中case=True表示区分大小写, 默认为True; na = False表示不匹配缺失值.
df_up[df_up.age.str.contains(‘3’, na=False)]
在这里插入图片描述
5)缺失值匹配:df[pd.isnull(df.字段名)]找出该字段juy缺失值的记录

df[pd.isnull(df.Age)

12 记录的合并
concat()函数,将两个或者多个数据表的记录合并一起,pandas.concat([df1, df2, df3…])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值