数据分析基础:数据读取与统计计数

来自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”用户对所有品牌的平均浏览量,以及购买过的品牌和没购买过的平均浏览量