利用Python进行数据分析学习笔记

1.USA.gov Data from Bitly

pandas中文手册
书本提供的数据源链接

import json
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
path='datasets/bitly_usagov/example.txt'
data=[json.loads(line) for line in open(path)]
df=pd.DataFrame(data)
df.info()

df.info()图片描述
df.loc的第一个参数是行标签,第二个参数为列标签(可选参数,默认为所有列标签),两个参数既可以是列表也可以是单个字符,如果两个参数都为列表则返回的是DataFrame,否则,则为Series。df.loc[行标签,列标签]

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

这里写图片描述

返回结果来看,tz列存在缺失值与空值,首先填充缺失值,然后处理空值:

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

这里写图片描述

使用matplotlib.pyplot数据展示
plot()绘图函数说明

plt.clf()
subset=clean_tz.value_counts()[:10]
subset.plot.barh()
plt.show()

这里写图片描述

DataFrame.sample(n=None,frac=None,replace=False, weights=None, andom_state=None, axis=None)
n是要抽取的行数。(例如n=10时,抽取其中的10行)
frac是抽取的比列。(有一些时候,我们并对具体抽取的行数不关系,我们想抽取其中的百分比,这个时候就可以选择使用frac,例如frac=0.8,就是抽取其中80%)
replace抽样后的数据是否代替原DataFrame()

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

这里写图片描述

假设我们需要统计windows与非windows的相关量,我们要抓取a字段中的’Windows’字符串。因为a字段同样存在缺失值,这里我们选择丢弃缺失值:
pandas中DataFrame类型数据操作函数
python进行数据处理——pandas的drop函数

clean_df=df[df.loc[:,'a'].notnull()]
#notnull(),返回值是布尔型的矩阵。再取df[布尔型矩阵]返回的是非空的行
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')#np.where(cond,x,y),True返回x的值,False返回y的值
clean_df.drop('a',axis=1,inplace=True)#drop函数默认删除行,列需要加axis = 1
#采用inplace=True之后,原数组直接就被替换

pandas groupby 详解

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

这里写图片描述

plt.clf()
tz_os_counts_subset.plot.barh()
plt.show()

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_42988748/article/details/82381416