《利用python进行数据分析》之《第二章引言》学习笔记_1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《利用python进行数据分析》之《第二章引言》学习笔记_1相关的知识,希望对你有一定的参考价值。

【例子1】来自bit.ly的1.usa.gov数据

1、文件位置描述:

正斜杠\反斜杠\混用都可以。如path="d:/python/ch01.txt"

首先,遇到的问题是pycharm的中文编码问题,注意IDEencoding改为utf-8,同时文件最开始加#-*- encoding:utf-8 -*-,同时含有中文的字符串记得加u。

2、文件读取首行:

open(path).readline()

3、JSON,一种web数据格式,python已有很多模块可以将json字符串转换成python字典,用法:

import json

path="ch01.txt"

records=[json.load(line) for line in open(path)]

此时records成为一组python字典了

显示字典第一行: records[0]

python的索引是从0开始的。给出以字符串形式表示的键就可以得到记录。如:records[0][‘tz‘]

4、在IPYTHON中,画图,应该用pylab模式打开才能看见图。在ipython中输入:%pylab或者加一句plt.show()

5、DataFrame是pandas中最重要的数据结构,它用于将数据表示为一个表格。从字典创建DataFrame的命令是:frame=DataFrame(records),此时frame是列行结构,frame[‘tz‘]是一个series对象,该对象有一个方法就是对值进行计数tz_counts=frame[‘tz‘].value_counts()

计数之后,我们就可以根据统计值绘图,但是记录中存在两类问题,没有这个字段或者这个字段为空。那么我们要先填上一个替代值。方法:使用fillna函数替换缺失值(NA),未知值(空)使用布尔型数组索引加以替换

clean_tz=frame[‘tz‘].fillna(‘Missing‘]

clean_tz[clean_tz==‘‘]=‘Unkown‘

tz_counts=clean_tz.value_counts()

5、pandas缺失值补充教程,参考:https://jingyan.baidu.com/article/93f9803fe29aece0e46f55cb.html

6、数据填充之后得到tz_counts 对象。该对象有plot方法可以用来画图。

tz_counts(:10).plot(kind=‘barh‘,rot=0)

7、接下来,利用字符串和表达式做一些数据处理工作

results=Series([x.split()[0] for x in frame.a.dropna()])

#对于一个 Series,dropna 返回一个仅含非空数据和索引值的 Series

先将缺失的字段移除:cframe=frame[frame.a.notnull()]

其次,根据a的值计算出各行是否是windows;#np.where函数是一个矢量化ifelse函数

operating_system=np.where(cframe[‘a‘].str.contains(‘windows‘), ‘windows‘, ‘no windows‘)

接下来根据时区和操作系统列表对数据进行分组:by_tz_os=cframe.groupby(‘tz‘,operating_system)

然后通过size对分组结果进行计数(类似于value_counts),并利用unstack对计数结果进行重塑。

#下面是将tz按照operating_system进行分组并计数并用unstack进行展开并填充na为0

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

agg_counts[:10]

最后我们来选择最常出现的时区,根据agg_counts中的行数构建了一个间接索引数组:

#下面注意 sum函数 默认axis = 0,是普通加和,axis = 1是按行加和,argsort是从小到大排序并返回下表

indexer=agg_counts.sum(1).argsort()

indexer[:10]

通过take截取最后10行

count_subset=agg_counts.take(indexer)[-10:]

count_subset.plot(kind=‘barh‘,stacker=True)

plt.show() #下面进行比例展示 normed_subset = count_subset.div(count_subset.sum(1),axis = 0) normed_subset.plot(kind = ‘barh‘,stacked = True) plt.show()

以上是关于《利用python进行数据分析》之《第二章引言》学习笔记_1的主要内容,如果未能解决你的问题,请参考以下文章

想学python进行数据分析,请问要学多久

利用python进行数据分析D1——ch02引言

利用python进行数据分析D1——ch02引言

学习Python怎么规划时间比较好?

《零压力学Python》 之 第二章知识点归纳

数据分析学习资料《利用Python进行数据分析第2版》+《Python数据分析与挖掘实战》+《从零开始学Python数据分析与挖掘》