前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单使用 :pandas 数据清洗

简单使用 :pandas 数据清洗

作者头像
andrew_a
发布2021-04-26 11:22:28
1.5K0
发布2021-04-26 11:22:28
举报

读取数据

  • 使用 pdread_sql 读取数据
代码语言:javascript
复制
import pymysql
import pandas as pd

self.conn = pymysql.connect(host=host, user=user,
password=pass, db=db, charset='utf8')

sql = 'select * from table_name'
df = pd.read_sql(sql, con=self.conn)

空值空格处理

  • 处理空值以及空格使用 pdstrip 方法以及 dropna 方法
代码语言:javascript
复制
df['product_name'].str.strip() 
# 删除列 `product_name` 为 `NaN` 的行 
df.dropna(subset=['product_name'], inplace=True)

异常值处理

  • 处理异常值使用 pdreplace 方法
代码语言:javascript
复制
df.replace(' ', np.nan, inplace=True)

数据重新写入到 MySQL

  • 数据重新写入 MySQL 使用 pdto_sql 方法
代码语言:javascript
复制
df.to_sql(name=table_name, con=self.conn, if_exists='append', index=True)

pandas 设置

代码语言:javascript
复制
#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置 value 的显示长度为 100,默认为 50
pd.set_option('max_colwidth',100)

问题

1、pd 的 to_sql 不能使用 pymysql 的连接,否则就会直接报错

代码语言:javascript
复制
pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': not all arguments converted during string formatting

需要改为

代码语言:javascript
复制
from sqlalchemy import create_engine

engine = create_engine("mysql+pymysql://user:pass@host:port/db")

2、空值处理的问题

  • 保存在 mysql 中的数据中有空值,但是使用 pd.str.strip() 处理没有用
  • 使用 replace 替换空格、空值为 nan 也没有用 解决办法:replace 使用正则替换
代码语言:javascript
复制
# 替换\r\n\t 以及 html 中的\xa0
df.replace(r'\r|\t|\n|\xa0', '', regex=True, inplace=True)
# 替换空格,将空格替换为空字符串
df['product_name'].replace(r' ', '', regex=True, inplace=True)
# 将空字符串替换为 nan
df['product_name'].replace(r'', np.nan, regex=True, inplace=True)
# 将乱码替换替换为空字符串(正则为匹配不是中文、字母、数字组成的字符串)
df['product_name'].replace(r'[^\u4e00-\u9fa5_a-zA-Z0-9]', np.nan, regex=True, inplace=True)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫scrapy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 读取数据
  • 空值空格处理
  • 异常值处理
  • 数据重新写入到 MySQL
    • pandas 设置
    • 问题
      • 1、pd 的 to_sql 不能使用 pymysql 的连接,否则就会直接报错
        • 2、空值处理的问题
        相关产品与服务
        云数据库 SQL Server
        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档