基于python+pandas的数据分析处理应用

2018-12-24 15:06何春燕王超宇成都理工大学
数码世界 2018年7期
关键词:面向对象用户数数据处理

何春燕 王超宇 成都理工大学

1.引言

Python是一种面向对象的脚本语言,自20世纪90年代初诞生到现在,已经被广泛应人工智能,机器学习,大数据等方面。python语法简单,容易理解和上手。无论安装还是使用python都不需要付费。python是一种面向对象的语言,同时也支持面向过程。基于它的开源的本质,python可在许多平台上使用,包括Windows,Linux等。python有强大的标准库和丰富的第三方库。.

Pandas被广泛运用于金融、统计以及社会科学领域的数据处理。

2.Pandas处理数据

2.1 数据导入

程序段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 数据处理

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天的新增用户数,纵向则表明不同渠道的新增用户数。

3 结束语

在大数据时代,数据分析的影响及重要性在不断拓宽和加深。本文介绍了基于Python,pandas简单的数据分析过程。

猜你喜欢
面向对象用户数数据处理
GEE平台下利用物候特征进行面向对象的水稻种植分布提取
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
基于低频功率数据处理的负荷分解方法
无人机测绘数据处理关键技术及运用
我国IPTV总用户数3.07亿户,同比增长6.7%
高层建筑沉降监测数据处理中多元回归分析方法的应用研究
高层建筑沉降监测数据处理中多元回归分析方法的应用研究
面向对象方法在水蓄冷PLC编程中应用分析
面向对象的组合软件工程研究
从面向过程到面向对象思维方式的教学引导