首页 » Python » pandas数据分析5:pandas批量处理表格和聚合计算

pandas数据分析5:pandas批量处理表格和聚合计算

 
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
47
48
49
50
51
52
53
54
55
56
57
import pymysql
import sqlalchemy
from sqlalchemy import create_engine
import pandas as pd
import warnings
import numpy as np
print(pymysql.version_info)
print(sqlalchemy.__version__)
warnings.filterwarnings("ignore")
pd.set_option('display.max_rows', None)      # 显示完整的行
# 建立数据库连接
# 创建连接参数
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_cg = '''
select 商机id,估价最大值,str_to_date(创建时间,'%%Y-%%m-%%d') as 创建时间,是否为真 from shangjidan
where str_to_date(创建时间,'%%Y-%%m-%%d') between str_to_date("2020-09-01",'%%Y-%%m-%%d') and str_to_date("2020-09-30",'%%Y-%%m-%%d')
limit 100
'''
data1 = pd.read_sql(sql_cg,conn)
print(data1)

# 批量处理是否为真的空白值变成假
# apply lambda表达式
data1_piliang = data1
data1_piliang['是否为真'] = data1_piliang['是否为真'].apply(lambda x:"假" if x == "" else x)
print(data1_piliang)

# 使用函数的方法
data1_piliang2 = data1
def func(x):
    if x == "":
        return "假"
    else:
        return x
def func2(x):
    if x == "":
        return 0
    else:
        return x
data1_piliang2['是否为真'] = data1_piliang2['是否为真'].apply(func)
data1_piliang2['估价最大值'] = data1_piliang2['估价最大值'].apply(func2)
print(data1_piliang2)

# 使用聚合操作来计算
# 对订单进行计数,对最大值进行中位数 对时间进行众数 对是否为真做众数
print(data1_piliang2.agg({'商机id':'count','估价最大值':np.median,'创建时间':'mode','是否为真':'mode'}))

原文链接:pandas数据分析5:pandas批量处理表格和聚合计算,转载请注明来源!

0