pandas-数据清洗

pandas数据清洗

01 | 数据清洗常用方法

pandas-数据清洗

pandas-数据清洗

; 02 | 数据集

链接: https://pan.baidu.com/s/153_QvZ-t1E2hykW2Cubg3Q
提取码: s98j

简介
这是一份旅行网站的数据集,数据包括每个行程的具体信息,比如出发地目的地、酒店情况、价格等等。我们利用这份数据集,来操作一次数据清洗的过程

03 | 数据清洗

1.查看基本信息

①一共有5100个数据,包括13个columns
②部分clomns存在空格


import pandas as pd

pd.set_option('display.max_columns',1000)
pd.set_option('display.width',1000)
pd.set_option('display.max_colwidth',1000)

df = pd.read_csv(r'C:\Users\Administrator\Documents\Downloads\qunar_freetrip.csv',index_col = 0)
print(df.head())
print(df.info())
print(df.describe())

pandas-数据清洗

2.处理空格

① 先将index转array
② 将空格replce or使用 strip()方法

columns = df.columns.values
print(columns)
df.columns = [x.strip() for x in columns]
print(df.columns)

pandas-数据清洗

3.处理重复值

① 先用duplicated()查看是否有重复项
② 利用drop_duplicates(inplace = True)删除

print(df.duplicated().value_counts())
duplicate = df[df.duplicated()]
print(duplicate)

df.drop(index = duplicate.index,inplace = True)
print(df.shape)

pandas-数据清洗
pandas-数据清洗
pandas-数据清洗

4.异常值处理

① 通过df.describe()看出部分数值有异常值
② 通过计算标准差来筛选出异常值
③ 删除异常值

print(df.describe().T)

sta = (df['价格'] - df['价格'].mean()) / df['价格'].std()
print(df[sta.abs() > 3 ])
print(df[df['节省'] > df['价格']])
df.drop([2792,2938,3147,3720],inplace = True)

'''
方法二
del = pd.concat([df[sta.abs() > 3,df[df['节省'] > df['价格']]).index
df.drop(index = del,inplace = True)
'''
df.reset_index()
print(df.shape)

5.缺失值处理

① df.isnull() 查看缺失值
② df.notnull() 查看不是缺失值
③ df.dropna() 删除缺失值
④ df.fillna() 填充缺失值
⑤ missingno库 可视化缺失值

print(df.isnull().sum())

print(df[df.出发地.isnull()])
df.loc[df.出发地.isnull(),'出发地'] = [str(i)[:2] for i in df.loc[df.出发地.isnull(),'路线名']]
print(df.loc[[1864,1930]])

print(df[df.目的地.isnull()])
df.loc[df.目的地.isnull(),'目的地'] = '大连'
print(df.loc[1875])

df.价格.fillna(round(df.价格.mean(),0),inplace = True)
df.节省.fillna(round(df.节省.mean(),0),inplace = True)
print(df.isnull().sum())

pandas-数据清洗

import missingno as mg
import matplotlib.pyplot as plt

mg.bar(df)
plt.show()

pandas-数据清洗

6.处理文本数据

① 利用酒店列,提取数据新增到’酒店评分’列
② 通过正则表达式提取数值

print(df.酒店[:10])

df['酒店评分'] = df.酒店.str.extract('(\d\.\d)分/5分',expand = False)
df['酒店等级'] = df.酒店.str.extract(' (.+) ',expand = False)

df['天数'] = df.路线名.str.extract('(\d)天\d晚',expand = False)
print(df.天数)

7.转换时间序列

import pandas as pd

df = pd.read_csv(r'D:\kc_house_data.csv')

print(df.info())

df['date'] = pd.to_datetime(df['date'],format='%Y/%m/%d')
print(df.date.head(10))
df.to_csv(r'D:\kc_house.csv')

8.时间序列切分

原始数据中,时间有两个数据,分别是2018-05-17,23:59:09
在这里我们先把不需要的钟点去除,先新建一个列,使用函数从时间中取出日期

pandas-数据清洗

data['日期']=[x.split(' ')[0] for x in data['时间']]

04 | 数据提取

1.正则表达式

import re

content = '个人信息姓名电话13829837584我反对我性别年433432龄就覅都很少能够i南方的弗3243农山大13243佛'

patten = r'1[3-9]\d{9}'
result = re.findall(patten,content)
result

5.数值判断

1.isin( )

判断变量是否在目标数据中


cities = pd.read_excel('目标城市.xlsx')

cities.info()
cities = list(cities['城市'])

'''
用isin()函数来判断是否在目标城市内
新增判断列data['是否在目标城市'],在目标城市为1,不在为0
'''
data['是否在目标城市'] = None
data.loc[data['城市'].isin(cities),'是否在目标城市'] = 1
data.loc[data['是否在目标城市'].isnull(),'是否在目标城市'] = 0

Original: https://blog.csdn.net/weixin_52730784/article/details/116565879
Author: 冷淡的蛋黄酱
Title: pandas-数据清洗

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/754999/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • CentOS 7安装conda并配置环境

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2023年1月16日
    091
  • 领域首创!合合信息与上海大学联合开启贵州原生态古彝文典籍数字化项目

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2023年1月19日
    0145
  • Pandas学习:系统性的学会Pandas的基本使用

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2022年12月30日
    080
  • FastAPI+Vue学习路线

    最近在学习FastAPI,不少优秀博主的文章对FastAPI的学习非常有用,因此在此记录下来,方便以后查看,也将它分享给大家! vue基本内容 vue的Ajax内容 因为Vue本身…

    Python 2023年8月9日
    038
  • AI Studio——百度飞桨初体验

    本文介绍了AI Studio的入门使用方法和基础的图形界面,旨在帮助和笔者一样的小白走好深度学习和人工智能的第一步。那么话不多说,现在发车。 目录 基本概要 登录流程 用户界面 F…

    Python 2023年9月27日
    054
  • 庐山真面目之十五微服务架构的动态分离的设计实现

    一、开场白我是一名程序员,是基于 NET 框架的跨平台开发的程序员。现在的业务系统,不论大小都开始实现了微服务,不管合不合适,最起码说起来挺牛气的。我做一位程序员,当然也不能落后了…

    Python 2023年10月22日
    028
  • python-类

    面向对象 在编程语言中,我们将变量看成数据,它用来存储多种形式的值;我们将函数看成操作,它用来对数据进行某些处理。所有的代码都由数据和操作构成,程序运行的本质就是对数据进行各种操作…

    Python 2023年8月1日
    020
  • Python使用pip安装Numpy模块

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2023年1月11日
    0204
  • Numpy和Pandas的区别

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2023年1月11日
    094
  • python中的decorator装饰器(上)

    在理解装饰器的概念前,我们首先看一下function和inner function在python中的含义。 function与inner function function:在py…

    Python 2023年11月2日
    027
  • python_matplotlib基础教程

    4、使用 xlabel() 和 ylabel() 方法来设置 x 轴和 y 轴的标签。 5、使用 title() 方法来设置标题。 6、使用 pyplot 中的 grid() 方法…

    Python 2023年11月2日
    028
  • python series拼接_pandas数据拼接的实现示例

    一 前言 pandas数据拼接有可能会用到,比如出现重复数据,需要合并两份数据的交集,并集就是个不错的选择,知识追寻者本着技多不压身的态度蛮学习了一下下; 二 数据拼接 在进行学习…

    Python 2023年8月8日
    025
  • bbs首页搭建(根据用户是否登录展示不同的内容)

    前端部分(主要是if进行一个判断) 判断是否登录,登录了展示不同内容! <ul class="nav navbar-nav navbar-right"&g…

    Python 2023年10月31日
    036
  • Python爬虫实战,requests+openpyxl模块,爬取小说数据并保存txt文档(附源码)

    前言 今天给大家介绍的是Python爬取小说数据并保存txt文档,在这里给需要的小伙伴们代码,并且给出一点小心得。 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的…

    Python 2023年10月30日
    016
  • 详解视频中动作识别模型与代码实践

    摘要:本案例将为大家介绍视频动作识别领域的经典模型并进行代码实践。 本文分享自华为云社区《视频动作识别》,作者:HWCloudAI。实验目标 通过本案例的学习: 掌握 C3D 模型…

    Python 2023年10月24日
    020
  • Python-Django-视图

    《 Django 框架》课程第 1 次教学 – 视图高级 一、内置错误视图 1 、视图 一个视图函数,简称视图,是一个简单的Python函数,它接受Web请求并且返回W…

    Python 2023年8月4日
    046
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球