数据分析基础:数据读取与统计计数
来自CloudWiki
数据分析基础方法
数据的读入
数据文件t_alibaba_data3.txt 来源于2014阿里天池数据竞赛。为天猫14年某月用户消费行为记录抽样。第一列为用户号,第二列为品牌号,第三列为记录类型(浏览:0 购买:1 收藏:2 购物车:3),四列为时间
下载地址:链接: https://pan.baidu.com/s/17x8XCT6qqgJkIIglpddJEw 提取码: f4nd
# 打开某个文件,注意目录字符串前面加"r",最后的一个字符r代表打开的方式,r代表已只读的方式打开 op=open(r"E:\t_alibaba_data3.txt","r") # readlines()是文件操作的一个常用方法,是在已经打开文件的基础上,把文件按行读入,注意这样读入后的结果是以行为元素的列表。 a=op.readlines() # 可以通过循环输出部分数据,因为数据有几万行,ipynb文件里输出太多行会死机,因此需要限制输出行数 for i in a[0:5]: print(i.split("\t")) op.close()
数据:
['10944750', '13451', '0', '06/04\n'] ['10944750', '13451', '2', '06/04\n'] ['10944750', '13451', '2', '06/04\n'] ['10944750', '13451', '0', '06/04\n'] ['10944750', '13451', '0', '06/04\n']
op1=open(r"E:\t_alibaba_data3.txt","r") k=0 for i in op1:#处理数据量比较大的时候用 print(i.split("\t")) k=k+1 if k==4:break#由于op1是指针,无法切片,只能通过break强行终止循环 op1.close()
['10944750', '13451', '0', '06/04\n'] ['10944750', '13451', '2', '06/04\n'] ['10944750', '13451', '2', '06/04\n'] ['10944750', '13451', '0', '06/04\n']
计数是统计的基础
字典的get方法与计数
字典的get方法,有两个参数,第一个参数是用来获取对应键的值,第二个参数则是“备胎”,如果前面的键不存在则返回参数二,如果参数二没有值则返回none
a ={1:4} print(a[1]) print(a.get(1),a.get(4),a.get(4,0),a.get(1,5))
4
4 None 0 4
a={1:4,2:5} a.update({4:1}) a[6]=0 #注意赋值语句在这里起到了与update一样的作用 print(a) #a[2]=7 a[6]=a[6]+2 print(a)
{1: 4, 2: 5, 4: 1, 6: 0} {1: 4, 2: 5, 4: 1, 6: 2}
a={1:3,2:5} a[1]=a.get(1)+1 a[4]=a.get(4,4)+2 print(a)
{1: 4, 2: 5, 4: 6}
c=[2,2,4,2,1,3,3] d={} for i in c: d[i]=d.get(i,0)+1#这里有两种情况,一种是没有此键,这时则会相当于update一个新的键值对{i:1},如果有此键,则在原来的值上加一 # print d print(d)
{2: 3, 4: 1, 1: 1, 3: 2}
collection 与 计数
from collections import Counter
c=[2,2,4,2,1,3,3] Counter(c)# Counter是更直接的一种计数方法 Counter({1: 1, 2: 3, 3: 2, 4: 1}) d=Counter(c) print(d.keys(),d.values(),d.items()) dict_keys([2, 4, 1, 3]) dict_values([3, 1, 1, 2]) dict_items([(2, 3), (4, 1), (1, 1), (3, 2)]) Counter(d.values()) Counter({1: 2, 2: 1, 3: 1}) list(d.values())[0]#d.values()不能直接切片,需要转换成list或其他数据类型
3
看起来Counter方法更加简单,但实际上get与Counter方法的应用的对象不同,get可以使用所有能迭代的对象上而Counter只能用在类似列表的数据类型上,因此实际上get方法用途更广泛
并且get方法能应对数据量更大的情况
集合
利用集合的特性:元素不能重复
a=set([2,2,4,2,1,3,3]) print(a,len(a))
{1, 2, 3, 4} 4
a={1,2,4,1} b={2,5,1,6} print(a&b,a-b,a|b,a^b)#集合的基本操作
{1, 2} {4} {1, 2, 4, 5, 6} {4, 5, 6}
练习
使用文件t_alibaba_data3.txt 做如下题目
请统计出各个品牌的浏览量分布
请画出每天的购买总量的时序图
以所有购买量大于二十的品牌做统计,浏览次数为横轴,购买量为纵轴,收藏为表示点的大小,并用随机列表选择颜色,做散点图
计算用户对“12154500”用户对所有品牌的平均浏览量,以及购买过的品牌和没购买过的平均浏览量