【Python】数据评估
【Python】数据评估
何为孤勇?明知不可为而为之,明知人心难测而信之。
前言
这是我自己学习Python的第六篇博客总结。后期我会继续把Python学习笔记开源至博客上。 上一期笔记有关Python的JSO与CSV数据获取,没看过的同学可以去看看: 【Python】JSO与CSV数据获取-CSD博客
在获得数据后,需要对原始数据的结构与内容进行评估。 如果数据评估后发现数据不能直接进行分析,需要先进行数据清洗。
数据结构评估
结构方面需要清理的数据叫做乱数据,结构方面不需要清理的数据叫做整洁数据。 整洁数据有以下特点:(列是属性,行是示例)
- 每列是一个变量。
- 每行是一个观察值。
- 每个单元格是一个元素值。
数据内容评估
内容方面需要清理的数据叫做脏数据,内容方面不需要清理的数据叫做干净数据。 脏数据包括:空白数据、重复数据、不一致数据、无效数据、错误数据。
代码实现
DataFrame.info()方法可以提供数据的概况信息,包括行(列)的数量、列名、列对应的数据类型 、非空缺值的数量,从宏观上进行评估。 DataFrame.head()和()方法可以提供开头几行数据或者结尾几行数据,DataFrame.sample()会随机返回几行数据,从具体的数据上进行评估。 DataFrame.info()方法得到的非空缺值的数量与行数进行对比,可以得到该列空缺值的数量,从空缺值上进行评估。 无论是Series对象还是DataFrame对象,都有isnull()方法,返回一个布尔值列表或者布尔值图表,能告诉我们原来对象的每个元素值是否为空缺值。 对于DataFrame对象,可以使用DataFrame列名.isnull()来判断具体某一列的每一项是否有空缺值。 对于DataFrame对象,可以使用DataFrame.isnull().sum()来计算每一列分别有多少空缺值。 对于DataFrame对象,可以使用print(DataFrame[DataFrame列名.isnull()])来到某一列存在缺失值的行。 无论是Series对象还是DataFrame对象,都有duplicated()方法,当某行与前面一行完全相同时,会返回Frue。如果DataFrame对象,如果希望指定某几列,则使用参数(subset("列名1","列名2")),当某行与前面一行在这两列上值完全相同时,会返回Frue。
import pandas as pd
csv1=pd.read_csv("C:/Users/风中的云彩2/Desktop/编程/python课件/数据清洗/")
with _context(
'_rows', one, # 显示所有行
'_columns', one, # 显示所有列
'display.width', one, # 自动检测终端宽度
'_colwidth', one # 不截断列内容
):
print(csv1.info())
print(csv1.isnull())
print(csv1["age"].isnull())
清理索引和列名
代码语言:javascript代码运行次数:0运行复制如果原始数据的第一行(列名)和第一列(索引)存在问题,那么就可以使用rename(index={})方法和rename(columns={})方法,字典里面的键是原始值,字典里面的值是修改后的值。但这种方法不会修改原来的图表,而是会返回一个新的修改后的图表。 使用set_index("列名")方法可以把这个列名作为索引,并返回一个新的图表。而reset_index()方法可以把当前索引作为一列的列名,然后使用位置索引,并返回一个新的图表。 sort_index()方法对索引进行排序;sort_index(axis=1)方法对列名进行排序。
import pandas as pd
csv1=pd.read_csv("C:/Users/风中的云彩2/Desktop/编程/python课件/数据清洗/")
csv1=csv1.rename(columns={"Unnamed: 0":"学号","客户_姓名":"客户姓名","age":"年龄"})
with _context(
'_rows', one, # 显示所有行
'_columns', one, # 显示所有列000000000000000000000000000
'display.width', one, # 自动检测终端宽度
'_colwidth', one # 不截断列内容
):
print(csv1)
清理数据内容
整洁的数据要求:
- 每列是一个变量。
- 每行是一个观察值。
- 每个单元格是一个元素值。
- 如果一个列出现了两个变量,那么就需要对这列进行拆分。DataFrame对象,我们可以使用DataFrame[新列名1,新列名2]=DataFrame列名0.str.split("字符",expand=True),然后使用DataFrame.drop(列名0,axis=1),来去掉原来的列。
- 如果一个变量出现在两列,那么就需要对这两列进行合并。DataFrame对象,我们可以使用DataFrame[新列名]=DataFrame列名0.(DataFrame列名01,sep="拼接分隔符"),然后使用DataFrame.drop(列名0,列名01,axis=1),来去掉原来的列。
- 宽数据转化成长数据,可以使用(DataFrame,id_vars="需要保留的列名1","需要保留的列名2",var_name="新列列名",value_name="变量值")。
- 如果某列数据都是以列表的形式存在,那么可以对该列进行拆分,可以使用("要拆分的列")。
处理缺失值
如果缺失值较少,那么可以直接手动定位缺失值位置,并给出新的值。 如果缺失值较多,那么可以使用fillna()方法,会把缺失值替换成传入的参数;当往fillna()中传入的是字典时,可以同时替换不同列的缺失值。 如果我们对缺失值无法进行补充,那么我们可以使用dropna.(subset=列名),对这一列参在缺失值的行进行删除。
处理重复数据
当要删除重复的数据时,可以使用drop_duplicates()方法。 删除的数据是第二次出现的值,第一次出现的值保持不变。 统一数据,可以使用replace("原始值",”新值“)来统一数据。 对于Series对象,可以通过astype()方法来改变类型。 对于数值数据,我们可以直接进行计算;对于分类数据,推荐转化为"category"类型。
对于DataFrame对象,我们可以使用_csv(文件路径,index=False)方法,能把数据保存在文件路径上面。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-12-1,如有侵权请联系 cloudcommunity@tencent 删除索引图表python对象数据感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 8 条评论) |
本站网友 墙壁裂缝 | 24分钟前 发表 |
axis=1) | |
本站网友 哈尔滨出租房屋 | 6分钟前 发表 |
从宏观上进行评估 | |
本站网友 害喜 | 25分钟前 发表 |
one | |
本站网友 喷砂洁牙 | 24分钟前 发表 |
原始发表:2024-12-1 | |
本站网友 皇蓉夫妻肺片 | 25分钟前 发表 |
"age" | |
本站网友 多多驿站 | 27分钟前 发表 |
统一数据 | |
本站网友 北京职业培训 | 4分钟前 发表 |
然后使用DataFrame.drop(列名0 |