首页 » Python » pandas数据分析3:异常值的处理

pandas数据分析3:异常值的处理

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import pymysql
import sqlalchemy
from sqlalchemy import create_engine
import pandas as pd
import numpy as np
print(pymysql.version_info)
print(sqlalchemy.__version__)

# 建立数据库连接
# 创建连接参数
db_info = {
    'user':'',
    'password':'',
    'host':'..',
    'database':''
}

# 连接数据库的方法create_engine,这里就用了字典的格式化输出的方式
conn = create_engine('mysql+pymysql://%(user)s:%(password)s@%(host)s/%(database)s?charset=gbk' % db_info,encoding='utf-8')


# 写sql获取需要的数据
sql_1 = 'select * from sheet2jisuan limit 10'
sql_2 = 'select * from sheet2jisuan limit 20'
data1 = pd.read_sql(sql_1,conn)
print(data1)
data2 = pd.read_sql(sql_2,conn)
print(data2)

# 异常值处理
# pandas会根据判断条件返回布尔值,所以可以通过这种方式来通过sum计算
yichang = (data1['年'].astype(int) > 2020) | (data1['月'].astype(int) > 12)
print(yichang)  # 结果全部都是false,因为数据较多,所以要使用sum来判断有多少异常值
print(sum(yichang))  # 结果是0
# 如何找到异常值所在的行标签
print(data1.loc[yichang].index)  # 结果为空,这里是示例下代码
# 最后删除异常值
data1_noyichang = data1.drop(labels=data1.loc[yichang].index)
print(data1_noyichang)

# 这里把上面的判断改一下,渠道是百度的都删去
yichang2 = (data1['渠道'] == "百度大搜")
print(yichang2)
data1_noyichang2 = data1.drop(labels=data1.loc[yichang2].index)
print(data1_noyichang2)
#  最终只留下了一个结果

原文链接:pandas数据分析3:异常值的处理,转载请注明来源!

0