数据分析案例

Posted xiaohuhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据分析案例相关的知识,希望对你有一定的参考价值。

1、json型数据分析

import json

path=rD:学习文档利用python数据分析第二版代码datasetsitly_usagovexample.txt
#records是一个list,中间的对象为dict,Json.loads()将dict转为str
records=[json.loads(line) for line in open(path,r, encoding=UTF-8)]
#注意要判断rec中是否有tz,否则会报错
time_zones=[rec[tz] for rec in records if tz in rec] 

#对时区进行计数
def get_counts(sequence):
    counts={}
    for x in sequence:
        if x in counts:
            counts[x]+=1
        else:
            counts[x]=1
    return counts

from collections import defaultdict
counts=defaultdict(int) #生成一个空字典,默认值是int型
counts=get_counts(time_zones)

#统计前十位的时区及其计数
def top_counts(count_dict, n=10):
    value_key_pairs=[(count,tz) for tz,count in count_dict.items()]
    value_key_pairs.sort()  #按count排序
    return value_key_pairs[-n:]
top_counts(counts)

#使用标准库获取前十的时区计数
from collections import Counter
counts=Counter(time_zones)
counts.most_common(10)

#用pandas对时区进行计数
import pandas as pd
frame = pd.DataFrame(records)

#计算一个Series中各值出现的频率
tz_counts=frame[tz].value_counts()
#tz_counts[:10]
#fillna会替换NaN值为Missing,NaN不是空值,而是没有这一列tz,所以值为NaN。
clean_tz=frame[tz].fillna(Missing)
#找出tz为空的值,并替换为unknown
clean_tz[clean_tz==‘‘]=Unknown
tz_counts=clean_tz.value_counts()
tz_counts[:10]

#用seaborn包创建水平柱状图
import seaborn as sns
subset=tz_counts[:10]
#sns.barplot(y=subset.index,x=subset.values)
#dropna去除数据结构中值为空的数据行
results=pd.Series([x.split() for x in frame.a.dropna()])
results.value_counts()

#移除空数据
frame=frame[frame.a.notnull() & frame.tz.notnull()]
#np.where(condition, x, y)满足条件(condition),输出x,不满足输出y。
frame[os]=np.where(frame[a].str.contains(Windows),Windwos,Not Windows)
#先按tz分组,在按os分组
newframe=frame.groupby([tz,os])
#对计数结果进行重塑,unpack把列变成行
agg_counts=newframe.size().unstack().fillna(0)
agg_counts[:10]
#sum(1)按行求和,argsort()返回从小到大排序的索引
indexer=agg_counts.sum(1).argsort()

#截取最后10行最大值
count_subset=agg_counts.take(indexer[-10:])
count_subset
#stack把行变成列
count_subset=count_subet.stack()

count_subset.name=total
count_subset=count_subet.reset_index()
count_subset[:10]
sns.barplot(x=total,y=tz,hue=os,data=count_subset)

2、固定分隔符的数据分析

import pandas as pd

#设置白色表格的样式
pd.options.display.max_rows=10
unames=[user_id,gender,age,occupation,zip]
users=pd.read_table(rD:学习文档利用python数据分析第二版代码datasetsmovielensusers.dat,sep=::,header=None,names=unames)
rnames=[user_id,movie_id,rating,timestamp]
ratings=pd.read_table(rD:学习文档利用python数据分析第二版代码datasetsmovielens
atings.dat,sep=::,header=None,names=rnames)
mnames=[movie_id,title,genres]
movies=pd.read_table(rD:学习文档利用python数据分析第二版代码datasetsmovielensmovies.dat,sep=::,header=None,names=mnames)
#将ratings跟users和movies合并
data=pd.merge(pd.merge(ratings,users),movies)
data.iloc[0]
#按性别计算每部电影的平均分,电影title是索引,gender是列
mean_ratings=data.pivot_table(rating,index=title,columns=gender,aggfunc=mean)
mean_ratings[:5]
ratings_by_title=data.groupby(title).size()
#标题索引中含有评分数据大于250条的电影名称
active_titles=ratings_by_title.index[ratings_by_title>=250]
mean_ratings=mean_ratings.loc[active_titles]
#获取女性观众最喜欢的电影,对F列降序排列
top_female_ratings=mean_ratings.sort_values(by=F,ascending=False)
top_female_ratings[:10]
#计算评分分歧,考虑性别
mean_ratings[diff]=mean_ratings[M]-mean_ratings[F]
sorted_by_diff=mean_ratings.sort_values(by=diff)
sorted_by_diff[:10]
sorted_by_diff[::-1][:10]
#找出分歧最大的电影,不考虑性别因素
rating_std_by_title=data.groupby(title)[rating].std()
rating_std_by_title=rating_std_by_title.loc[active_titles]
rating_std_by_title.sort_values(ascending=False)[:10]

3、

以上是关于数据分析案例的主要内容,如果未能解决你的问题,请参考以下文章

在案例演示中嵌入片段

详细实例说明+典型案例实现 对动态规划法进行全面分析 | C++

java开发的项目案例,大厂内部资料

使用Array.Count并匹配案例F#

14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段

微信小程序开发之--"template模板“的应用