python数据分析简单实例-利用Python进行数据分析――基础示例

本文通过实例详细介绍了如何使用Python进行数据分析,涉及USA.gov的Bitly数据清洗、处理与可视化,以及MovieLens数据的分析。内容包括数据读取、数据预处理、数据统计与可视化,展示了Python在数据分析领域的应用。
摘要由CSDN通过智能技术生成

编辑推荐:

来源csdn

,文章通过美国官方网站的几个案例详细讲解了Python数据分析,介绍较为详细,更多内容请参阅下文。

import json

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

1.USA.gov Data from Bitly

此数据是美国官方网站从用户那搜集到的匿名数据。

path='datasets/bitly_usagov/example.txt'

data=[json.loads(line) for line in open(path)]

df=pd.DataFrame(data)

df.info()

2019032821.png

tz字段包含的是时区信息。

df.loc[:,'tz'].value_counts()[:10]

2019032822.png

根据info()与value_counts()的返回结果来看,tz列存在缺失值与空值,首先填充缺失值,然后处理空值:

clean_tz=df.loc[:,'tz'].fillna('missing')

clean_tz.loc[clean_tz=='']='unkonwn'

clean_tz.value_counts()[:5]

2019032823.png

plt.clf()

subset=clean_tz.value_counts()[:10]

subset.plot.barh()

plt.show()

2019032824.png

a字段包含的是浏览器、设备与应用等信息。

df.loc[:,'a'].sample(10)

2019032825.png

假设我们需要统计windows与非windows的相关量,我们要抓取a字段中的’Windows’字符串。因为a字段同样存在缺失值,这里我们选择丢弃缺失值:

clean_df=df[df.loc[:,'a'].notnull()]

mask=clean_df.loc[:,'tz']==''

clean_df.loc[:,'tz'].loc[mask]='unkonwn'

mask=clean_df.loc[:,'a'].str.contains('Windows')

clean_df.loc[:,'os']=np.where(mask,'Windows','not

Windows')

clean_df.drop('a',axis=1,inplace=True)

by_tz_os=clean_df.groupby(['tz','os'])

tz_os_counts=by_tz_os.size().unstack().fillna(0)

indexer=tz_os_counts.sum(axis=1).argsort() #返回排序后的索引列表

tz_os_counts_subset=tz_os_counts.take(indexer[-10:])

#取得索引列表的后十条

tz_os_counts_subset

2019032826.png

plt.clf()

tz_os_counts_subset.plot.barh()

plt.show()

2019032827.png

因为不同地区的数量差异悬殊,如果我们要更清楚得查看系统差异,还需要将数据进行归一化:

tz_os_counts_subset_norm = tz_os_counts_subset.values / tz_os_counts_subset.sum (axis=1).values.reshape (10,1)

#转换成numpy数组来计算百分比

tz_os_counts_subset_norm= pd.DataFrame (tz_os_counts_subset_norm,

index= tz_os_counts_subset.index,

columns= tz_os_counts_subset.columns)

plt.clf()

tz_os_counts_subset_norm.plot.barh()

plt.show()

2019032828.png

# MovieLens

rating_col=['UserID','MovieID','Rating','Timestamp']

user_col=['UserID','Gender','Age','Occupation','Zip-code']

movie_col=['MovieID','Title','Genres']

ratings=pd.read_table ('datasets/movielens/ratings.dat', header=None,sep='::',names=rating_col,engine='python')

users=pd.read_table ('datasets/movielens/users.dat', header=None,sep='::',names=user_col,engine='python')

movies=pd.read_table ('datasets/movielens/movies.dat', header=None,sep='::',names=movie_col,engine='python')

ratings.sample(3)

2019032829.png

users.sample(3)

20190328210.png

movies.sample(3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值