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

实战py - 节1:采用numpy、pandas进行数据整理及清洗

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

实战py - 节1:采用numpy、pandas进行数据整理及清洗

现有3张表,表结构如下:

  • 需将3张表采用外连接进行合并,将空值补充完整;
  • 查找学生名字为李明,班级人数为50人的数据;
  • 新增一列数据,学生成绩*0.8;
  • 数据从小到大排序,并修改索引为学生名字;
import numpy as np
import pandas as pd

# 读取数据
map_class = pd.read_excel('./map_class.xlsx')
map_stu_num = pd.read_excel('./map_stu_num.xlsx')
class_grade = pd.read_csv('./class_grade.csv')

# 对数据进行合并
merge_1 = pd.merge(left=class_grade, right=map_class, how='outer', left_on=classid, right_on=class_id)
# 检查及清洗
set(class_grade['classid'].unique()) - set(map_class['classid'].unique()) #集合求差集,可以预判是否有空值
set(map_class['classid'].unique()) - set(class_grade['classid'].unique()) #集合求差集,可以预判是否有空值
merge_1.isnull().any(axis=0) #判断列方向是否有空值
merge_1.isnull().any(axis=1) #判断行方向是否有空值
merge_1.loc[merge_1.isnull().any(axis=1)]['classid'].unique() #查看为空值的班级id,然后线下查找为空的班级名字
merge_1.loc[merge_1['classid']=='id1002','class_name'] = '1002班级' #该方法仅适用于空值id较少情况下
merge_1 = merge_1.drop(labels = ['class_id'],axis = 1) #删除指定的列,classid与class_id重复
merge_11 = merge_1.drop(labels = merge_1.loc[merge_1['class_id']=='id1000'].index, axis=0).copy() #删除“id1000”的行,一般删除数据会复制一份
merge_11.dropna(inplace = True) #删除空值的行,不用赋值,采用inplace可直接修改内存结构
merge_11.fillna(value=0) #填充空值
#再次进行合并
merge_2 = pd.merge(left=merge_11, right=map_stu_num, how='outer')

#查找学生名字为李明,班级人数为50人的数据
data1 = merge_2.query('class_name=="李明" & num==50 ')
merge_2.loc('class_name=="李明" & num==50 ')

#新增一列数据,学生成绩*0.8
merge_2['80per_grade'] = merge_2['stu_grade']*0.8

#数据从小到大排序,并修改索引为学生名字
data2 = merge_2.sort_values(by = ['stu_grade'],ascending=True)#先按sc,再按ma排序,降序
data3 = data2.set_index(keys=[stu_name']) #指定某一列作为行索引
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/965610.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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