何春燕 王超宇 成都理工大学
Python是一种面向对象的脚本语言,自20世纪90年代初诞生到现在,已经被广泛应人工智能,机器学习,大数据等方面。python语法简单,容易理解和上手。无论安装还是使用python都不需要付费。python是一种面向对象的语言,同时也支持面向过程。基于它的开源的本质,python可在许多平台上使用,包括Windows,Linux等。python有强大的标准库和丰富的第三方库。.
Pandas被广泛运用于金融、统计以及社会科学领域的数据处理。
程序段1:
从mangoDB读取用户表
import pandas as pd
from pymongo import MongoClient
host = ‘0.0.0.0’# 配置 MongoDB 连接信息
port = 27019
client = MongoClient(host=host, port=port)
collenction =‘user’
cursor = db[collection].find({})
User = pd.DataFrame(list(cursor))
部分数据展示:
user_id channel
first_visit_time
2018-01-04 10:43:33 33737760 anzhishichang
2018-01-04 13:54:50 33217154 anzhishichang
2018-01-08 17:46:22 33130645 anzhishichang
2.2.1. 获取新增用户
新增用户:首次使用应用程序的用户,以first_visit_time为依据,判断用户是否为新增用户。
时间序列分析在金融数据分析中占据重要位置,可传入字符串进行索引。
例如可传入”20180109”来获取1月9号首次访问应用程序的用户数据,
User[‘20180109]
user_id channel
first_visit_time
2018-01-09 15:50:44 33217151 anzhishichang
可传入时间段获取数据:
User[“201808”:”20180111”]
user_id channel
first_visit_time
2018-01-08 17:43:11 4897182 anzhishichang
2018-01-11 09:18:59 33217153 anzhishichang
时间索引的切片操作包含尾部的数据。
2.2.2.获取最近7天新增用户数
程序段2:
import pandas as pd
from datetime import datetime, date, timedelta
end_date = date.today()
new_user = pd.Series(name=`新增用户数`)
#通过for循环获取7天的新增用户数
for i in range(7):
dt = date.today() - timedelta(days=i)
sum_new = User[dt[-4:]]
new_user[dt] = len(sum_new)
返回结果:
0522 65
0521 36
0520 8
0519 6
0518 3
0517 41
0516 58
可清晰的看到,每天的新增用户数。
2.2.3.获取最近7天不同渠道的新增用户数
程序段3:
import pandas as pd
from datetime import datetime, timedelta, date
new7channel = pd.DataFrame()
#外层for循环获取最近7天的新增用户数据
for i in range(7):
Dt = date.today() - timedelta(days=i)
dt1 = datetime.strftime(dt, "%Y%m%d")
data = User[dt1]
Channel = data[`channel`].drop_duplicates()
new_channel=pd.Series(name=dt1[-4:])
#内层for循环,获取各渠道新增用户数
for cn in channel:
dt_cn = data[data[`channel`] == cn]
num_channel[cn] = len(dt_cn)
#concat函数将数据连接起来。通过fillna函数将值为NaN数据用0填充。
new7channel=pd.concat([new7channel,new_channel],axis=1).fillna(0)
部分结果:
0523 0522 0521 0520 0519 0518 0517
AppStore 8.0 20.0 13.0 13.0 12.0 11.0 20.0
c360 0.0 2.0 2.0 0.0 0.0 0.0 1.0
横向数据表示不同渠道最近7天的新增用户数,纵向则表明不同渠道的新增用户数。
在大数据时代,数据分析的影响及重要性在不断拓宽和加深。本文介绍了基于Python,pandas简单的数据分析过程。