A. python数据分析与应用-Python数据分析与应用 pdf 内部全资料版
给大家带来的一篇关于Python数据相关的电子书资源,介绍了关于Python方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小281 MB,黄红梅 张良均编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.8。
内容介绍
目录
第1章Python数据分析概述1
任务1.1认识数据分析1
1.1.1掌握数据分析的概念2
1.1.2掌握数据分析的流程2
1.1.3了解数据分析应用场景4
任务1.2熟悉Python数据分析的工具5
1.2.1了解数据分析常用工具6
1.2.2了解Python数据分析的优势7
1.2.3了解Python数据分析常用类库7
任务1.3安装Python的Anaconda发行版9
1.3.1了解Python的Anaconda发行版9
1.3.2在Windows系统中安装Anaconda9
1.3.3在Linux系统中安装Anaconda12
任务1.4掌握Jupyter Notebook常用功能14
1.4.1掌握Jupyter Notebook的基本功能14
1.4.2掌握Jupyter Notebook的高 级功能16
小结19
课后习题19
第2章NumPy数值计算基础21
任务2.1掌握NumPy数组对象ndarray21
2.1.1创建数组对象21
2.1.2生成随机数27
2.1.3通过索引访问数组29
2.1.4变换数组的形态31
任务2.2掌握NumPy矩阵与通用函数34
2.2.1创建NumPy矩阵34
2.2.2掌握ufunc函数37
任务2.3利用NumPy进行统计分析41
2.3.1读/写文件41
2.3.2使用函数进行简单的统计分析44
2.3.3任务实现48
小结50
实训50
实训1创建数组并进行运算50
实训2创建一个国际象棋的棋盘50
课后习题51
第3章Matplotlib数据可视化基础52
任务3.1掌握绘图基础语法与常用参数52
3.1.1掌握pyplot基础语法53
3.1.2设置pyplot的动态rc参数56
任务3.2分析特征间的关系59
3.2.1绘制散点图59
3.2.2绘制折线图62
3.2.3任务实现65
任务3.3分析特征内部数据分布与分散状况68
3.3.1绘制直方图68
3.3.2绘制饼图70
3.3.3绘制箱线图71
3.3.4任务实现73
小结77
实训78
实训1分析1996 2015年人口数据特征间的关系78
实训2分析1996 2015年人口数据各个特征的分布与分散状况78
课后习题79
第4章pandas统计分析基础80
任务4.1读/写不同数据源的数据80
4.1.1读/写数据库数据80
4.1.2读/写文本文件83
4.1.3读/写Excel文件87
4.1.4任务实现88
任务4.2掌握DataFrame的常用操作89
4.2.1查看DataFrame的常用属性89
4.2.2查改增删DataFrame数据91
4.2.3描述分析DataFrame数据101
4.2.4任务实现104
任务4.3转换与处理时间序列数据107
4.3.1转换字符串时间为标准时间107
4.3.2提取时间序列数据信息109
4.3.3加减时间数据110
4.3.4任务实现111
任务4.4使用分组聚合进行组内计算113
4.4.1使用groupby方法拆分数据114
4.4.2使用agg方法聚合数据116
4.4.3使用apply方法聚合数据119
4.4.4使用transform方法聚合数据121
4.4.5任务实现121
任务4.5创建透视表与交叉表123
4.5.1使用pivot_table函数创建透视表123
4.5.2使用crosstab函数创建交叉表127
4.5.3任务实现128
小结130
实训130
实训1读取并查看P2P网络贷款数据主表的基本信息130
实训2提取用户信息更新表和登录信息表的时间信息130
实训3使用分组聚合方法进一步分析用户信息更新表和登录信息表131
实训4对用户信息更新表和登录信息表进行长宽表转换131
课后习题131
第5章使用pandas进行数据预处理133
任务5.1合并数据133
5.1.1堆叠合并数据133
5.1.2主键合并数据136
5.1.3重叠合并数据139
5.1.4任务实现140
任务5.2清洗数据141
5.2.1检测与处理重复值141
5.2.2检测与处理缺失值146
5.2.3检测与处理异常值149
5.2.4任务实现152
任务5.3标准化数据154
5.3.1离差标准化数据154
5.3.2标准差标准化数据155
5.3.3小数定标标准化数据156
5.3.4任务实现157
任务5.4转换数据158
5.4.1哑变量处理类别型数据158
5.4.2离散化连续型数据160
5.4.3任务实现162
小结163
实训164
实训1插补用户用电量数据缺失值164
实训2合并线损、用电量趋势与线路告警数据164
实训3标准化建模专家样本数据164
课后习题165
第6章使用scikit-learn构建模型167
任务6.1使用sklearn转换器处理数据167
6.1.1加载datasets模块中的数据集167
6.1.2将数据集划分为训练集和测试集170
6.1.3使用sklearn转换器进行数据预处理与降维172
6.1.4任务实现174
任务6.2构建并评价聚类模型176
6.2.1使用sklearn估计器构建聚类模型176
6.2.2评价聚类模型179
6.2.3任务实现182
任务6.3构建并评价分类模型183
6.3.1使用sklearn估计器构建分类模型183
6.3.2评价分类模型186
6.3.3任务实现188
任务6.4构建并评价回归模型190
6.4.1使用sklearn估计器构建线性回归模型190
6.4.2评价回归模型193
6.4.3任务实现194
小结196
实训196
实训1使用sklearn处理wine和wine_quality数据集196
实训2构建基于wine数据集的K-Means聚类模型196
实训3构建基于wine数据集的SVM分类模型197
实训4构建基于wine_quality数据集的回归模型197
课后习题198
第7章航空公司客户价值分析199
任务7.1了解航空公司现状与客户价值分析199
7.1.1了解航空公司现状200
7.1.2认识客户价值分析201
7.1.3熟悉航空客户价值分析的步骤与流程201
任务7.2预处理航空客户数据202
7.2.1处理数据缺失值与异常值202
7.2.2构建航空客户价值分析关键特征202
7.2.3标准化LRFMC模型的5个特征206
7.2.4任务实现207
任务7.3使用K-Means算法进行客户分群209
7.3.1了解K-Means聚类算法209
7.3.2分析聚类结果210
7.3.3模型应用213
7.3.4任务实现214
小结215
实训215
实训1处理信用卡数据异常值215
实训2构造信用卡客户风险评价关键特征217
实训3构建K-Means聚类模型218
课后习题218
第8章财政收入预测分析220
任务8.1了解财政收入预测的背景与方法220
8.1.1分析财政收入预测背景220
8.1.2了解财政收入预测的方法222
8.1.3熟悉财政收入预测的步骤与流程223
任务8.2分析财政收入数据特征的相关性223
8.2.1了解相关性分析223
8.2.2分析计算结果224
8.2.3任务实现225
任务8.3使用Lasso回归选取财政收入预测的关键特征225
8.3.1了解Lasso回归方法226
8.3.2分析Lasso回归结果227
8.3.3任务实现227
任务8.4使用灰色预测和SVR构建财政收入预测模型228
8.4.1了解灰色预测算法228
8.4.2了解SVR算法229
8.4.3分析预测结果232
8.4.4任务实现234
小结236
实训236
实训1求取企业所得税各特征间的相关系数236
实训2选取企业所得税预测关键特征237
实训3构建企业所得税预测模型237
课后习题237
第9章家用热水器用户行为分析与事件识别239
任务9.1了解家用热水器用户行为分析的背景与步骤239
9.1.1分析家用热水器行业现状240
9.1.2了解热水器采集数据基本情况240
9.1.3熟悉家用热水器用户行为分析的步骤与流程241
任务9.2预处理热水器用户用水数据242
9.2.1删除冗余特征242
9.2.2划分用水事件243
9.2.3确定单次用水事件时长阈值244
9.2.4任务实现246
任务9.3构建用水行为特征并筛选用水事件247
9.3.1构建用水时长与频率特征248
9.3.2构建用水量与波动特征249
9.3.3筛选候选洗浴事件250
9.3.4任务实现251
任务9.4构建行为事件分析的BP神经网络模型255
9.4.1了解BP神经网络算法原理255
9.4.2构建模型259
9.4.3评估模型260
9.4.4任务实现260
小结263
实训263
实训1清洗运营商客户数据263
实训2筛选客户运营商数据264
实训3构建神经网络预测模型265
课后习题265
附录A267
附录B270
参考文献295
学习笔记
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等 。 定义 (推荐学习:Python视频教程) 用户可以通过电子邮件,Dropbox,GitHub 和 Jupyter Notebook Viewer,将 Jupyter Notebook 分享给其他人。 在Jupyter Notebook 中,代码可以实时的生成图像,视频,LaTeX和JavaScript。 使用 数据挖掘领域中最热门的比赛 Kaggle 里的资料都是Jupyter 格式 。 架构 Jupyter组件 Jupyter包含以下组件: Jupyter Notebook 和 ……
本文实例讲述了Python实现的微信好友数据分析功能。分享给大家供大家参考,具体如下: 这里主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为 itchat , pandas , pyecharts 等 1、安装itchat 微信的python sdk,用来获取个人好友关系。获取的代码 如下: import itchatimport pandas as pdfrom pyecharts import Geo, Baritchat.login()friends = itchat.get_friends(update=True)[0:]def User2dict(User): User_dict = {} User_dict["NickName"] = User["NickName"] if User["NickName"] else "NaN" User_dict["City"] = User["City"] if User["City"] else "NaN" User_dict["Sex"] = User["Sex"] if User["Sex"] else 0 User_dict["Signature"] = User["Signature"] if User["Signature"] else "NaN" ……
基于微信开放的个人号接口python库itchat,实现对微信好友的获取,并对省份、性别、微信签名做数据分析。 效果: 直接上代码,建三个空文本文件stopwords.txt,newdit.txt、unionWords.txt,下载字体simhei.ttf或删除字体要求的代码,就可以直接运行。 #wxfriends.py 2018-07-09import itchatimport sysimport pandas as pdimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei']#绘图时可以显示中文plt.rcParams['axes.unicode_minus']=False#绘图时可以显示中文import jiemport jieba.posseg as psegfrom scipy.misc import imreadfrom wordcloud import WordCloudfrom os import path#解决编码问题non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd) #获取好友信息def getFriends():……
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
本文实例讲述了Python数据分析之双色球基于线性回归算法预测下期中奖结果。分享给大家供大家参考,具体如下: 前面讲述了关于双色球的各种算法,这里将进行下期双色球号码的预测,想想有些小激动啊。 代码中使用了线性回归算法,这个场景使用这个算法,预测效果一般,各位可以考虑使用其他算法尝试结果。 发现之前有很多代码都是重复的工作,为了让代码看的更优雅,定义了函数,去调用,顿时高大上了 #!/usr/bin/python# -*- coding:UTF-8 -*-#导入需要的包import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport operatorfrom sklearn import datasets,linear_modelfrom sklearn.linear_model import LogisticRegression#读取文件d……
以上就是本次介绍的Python数据电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对鬼鬼的支持。
注·获取方式:私信(666)
B. 利用Python进行数据分析笔记:3.1数据结构
元组是一种固定长度、不可变的Python对象序列。创建元组最简单的办法是用逗号分隔序列值:
tuple 函数将任意序列或迭代器转换为元组:
中括号 [] 可以获取元组的元素, Python中序列索引从0开始 :
元组一旦创建,各个位置上的对象是无法被修改的,如果元组的一个对象是可变的,例如列表,你可以在它内部进行修改:
可以使用 + 号连接元组来生成更长的元组:
元组乘以整数,则会和列表一样,生成含有多份拷贝的元组:
将元组型的表达式赋值给变量,Python会对等号右边的值进行拆包:
拆包的一个常用场景就是遍历元组或列表组成的序列:
*rest 用于在函数调用时获取任意长度的位置参数列表:
count 用于计量某个数值在元组中出现的次数:
列表的长度可变,内容可以修改。可以使用 [] 或者 list 类型函数来定义列表:
append 方法将元素添加到列表尾部:
insert 方法可以将元素插入到指定列表位置:
( 插入位置范围在0到列表长度之间 )
pop 是 insert 的反操作,将特定位置的元素移除并返回:
remove 方法会定位第一个符合要求的值并移除它:
in 关键字可以检查一个值是否在列表中;
not in 表示不在:
+ 号可以连接两个列表:
extend 方法可以向该列表添加多个元素:
使用 extend 将元素添加到已经存在的列表是更好的方式,比 + 快。
sort 方法可以对列表进行排序:
key 可以传递一个用于生成排序值的函数,例如通过字符串的长度进行排序:
bisect.bisect 找到元素应当被插入的位置,返回位置信息
bisect.insort 将元素插入到已排序列表的相应位置保持序列排序
bisect 模块的函数并不会检查列表是否已经排序,因此对未排序列表使用bisect不会报错,但是可能导致不正确结果
切片符号可以对大多数序列类型选取子集,基本形式是 [start:stop]
起始位置start索引包含,结束位置stop索引不包含
切片还可以将序列赋值给变量:
start和stop可以省略,默认传入起始位置或结束位置,负索引可以从序列尾部进行索引:
步进值 step 可以在第二个冒号后面使用, 意思是每隔多少个数取一个值:
对列表或元组进行翻转时,一种很聪明的用法时向步进值传值-1:
dict(字典)可能是Python内建数据结构中最重要的,它更为常用的名字是 哈希表 或者 关联数组 。
字典是键值对集合,其中键和值都是Python对象。
{} 是创建字典的一种方式,字典中用逗号将键值对分隔:
你可以访问、插入或设置字典中的元素,:
in 检查字典是否含有一个键:
del 或 pop 方法删除值, pop 方法会在删除的同时返回被删的值,并删除键:
update 方法将两个字典合并:
update方法改变了字典元素位置,对于字典中已经存在的键,如果传给update方法的数据也含有相同的键,则它的值将会被覆盖。
字典的值可以是任何Python对象,但键必须是不可变的对象,比如标量类型(整数、浮点数、字符串)或元组(且元组内对象也必须是不可变对象)。
通过 hash 函数可以检查一个对象是否可以哈希化(即是否可以用作字典的键):
集合是一种无序且元素唯一的容器。
set 函数或者是用字面值集与大括号,创建集合:
union 方法或 | 二元操作符获得两个集合的联合即两个集合中不同元素的并集:
intersection 方法或 & 操作符获得交集即两个集合中同时包含的元素:
常用的集合方法列表:
和字典类似,集合的元素必须是不可变的。如果想要包含列表型的元素,必须先转换为元组:
C. 利用Python进行数据分析-读书笔记(3)
pandas专门为处理表格和混杂数据设计
import pandas as pd
from pandas import Series,DataFrame
Series 类似于一维数组+索引
data = pd.Series([1,2,3,4,5]) 生成Series数据
data.values data.index
pd.Series([1,2],index = ['a','b']) 设置索引
data['a'] 通过索引选取Series中单个或一组值
data[data%2==0] 进行类似numpy数组的运算index仍会保留
'a' in data
pd.Series(python字典) 可以通过python字典创建Series
可以通过设置index改变Series元素顺序
缺失值用NaN表示
pd.isnull(data) 检测缺失数据
pd.notnull
data1 + data2 可以根据索引自动对齐数据进行运算,类似join操作
data.name data.index.name 可赋值
index可以通过赋值方式修改
pd.DataFrame(XXX)传入元素为等长列表或np数组组成的字典可以生成DataFrame数据,字典key值为列名
frame.head() 前五行
pd.DataFrame(XXX, columns = [xxx], index = [xxxxx]) 可能产生NaN
frame['a'] 取列名为a的一列数据 等价于 frame.a(此时a需要是合理的变量名) 可以以列表形式取多列数据 返回的Series序列索引与原DataFrame相同
frame.loc[0] 行选取
可以用一个Series/值对某列赋值,需要长度相等
对不存在的列赋值可创建新列
del frame[列名] 删除列
通过索引方式返回数据视图,修改此返回数据也会影响源数据,Series.()可以创建副本
嵌套字典传给DataFrame,外层字典的键作为列名,内层键作为行索引
frame.T 转置
frame.reindex(新索引列表) 根据新索引重排,若索引值当前不存在则NaN
列可以用columns关键字重新索引
obj3 = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
obj3.reindex(range(6), method='ffill') ffill实现前向值填充
reindex可以修改(行)索引和列。只传递一个序列时,会重新索引结果的行,列可以用columns关键字重新索引
Series索引
series(索引列表/数值范围切片) 选取对应元素
D. 可以让你快速用Python进行数据分析的10个小技巧
一些小提示和小技巧可能是非常有用的,特别是在编程领域。有时候使用一点点黑客技术,既可以节省时间,还可能挽救“生命”。
一个小小的快捷方式或附加组件有时真是天赐之物,并且可以成为真正的生产力助推器。所以,这里有一些小提示和小技巧,有些可能是新的,但我相信在下一个数据分析项目中会让你非常方便。
Pandas中数据框数据的Profiling过程
Profiling(分析器)是一个帮助我们理解数据的过程,而Pandas Profiling是一个Python包,它可以简单快速地对Pandas 的数据框数据进行 探索 性数据分析。
Pandas中df.describe()和df.info()函数可以实现EDA过程第一步。但是,它们只提供了对数据非常基本的概述,对于大型数据集没有太大帮助。 而Pandas中的Profiling功能简单通过一行代码就能显示大量信息,且在交互式HTML报告中也是如此。
对于给定的数据集,Pandas中的profiling包计算了以下统计信息:
由Pandas Profiling包计算出的统计信息包括直方图、众数、相关系数、分位数、描述统计量、其他信息——类型、单一变量值、缺失值等。
安装
用pip安装或者用conda安装
pip install pandas-profiling
conda install -c anaconda pandas-profiling
用法
下面代码是用很久以前的泰坦尼克数据集来演示多功能Python分析器的结果。
#importing the necessary packages
import pandas as pd
import pandas_profiling
df = pd.read_csv('titanic/train.csv')
pandas_profiling.ProfileReport(df)
一行代码就能实现在Jupyter Notebook中显示完整的数据分析报告,该报告非常详细,且包含了必要的图表信息。
还可以使用以下代码将报告导出到交互式HTML文件中。
profile = pandas_profiling.ProfileReport(df)
profile.to_file(outputfile="Titanic data profiling.html")
Pandas实现交互式作图
Pandas有一个内置的.plot()函数作为DataFrame类的一部分。但是,使用此功能呈现的可视化不是交互式的,这使得它没那么吸引人。同样,使用pandas.DataFrame.plot()函数绘制图表也不能实现交互。 如果我们需要在不对代码进行重大修改的情况下用Pandas绘制交互式图表怎么办呢?这个时候就可以用Cufflinks库来实现。
Cufflinks库可以将有强大功能的plotly和拥有灵活性的pandas结合在一起,非常便于绘图。下面就来看在pandas中如何安装和使用Cufflinks库。
安装
pip install plotly
# Plotly is a pre-requisite before installing cufflinks
pip install cufflinks
用法
#importing Pandas
import pandas as pd
#importing plotly and cufflinks in offline mode
import cufflinks as cf
import plotly.offline
cf.go_offline()
cf.set_config_file(offline=False, world_readable=True)
是时候展示泰坦尼克号数据集的魔力了。
df.iplot()
df.iplot() vs df.plot()
右侧的可视化显示了静态图表,而左侧图表是交互式的,更详细,并且所有这些在语法上都没有任何重大更改。
Magic命令
Magic命令是Jupyter notebook中的一组便捷功能,旨在解决标准数据分析中的一些常见问题。使用命令%lsmagic可以看到所有的可用命令。
所有可用的Magic命令列表
Magic命令有两种:行magic命令(line magics),以单个%字符为前缀,在单行输入操作;单元magic命令(cell magics),以双%%字符为前缀,可以在多行输入操作。如果设置为1,则不用键入%即可调用Magic函数。
接下来看一些在常见数据分析任务中可能用到的命令:
% pastebin
%pastebin将代码上传到Pastebin并返回url。Pastebin是一个在线内容托管服务,可以存储纯文本,如源代码片段,然后通过url可以与其他人共享。事实上,Github gist也类似于pastebin,只是有版本控制。
在file.py文件中写一个包含以下内容的python脚本,并试着运行看看结果。
#file.py
def foo(x):
return x
在Jupyter Notebook中使用%pastebin生成一个pastebin url。
%matplotlib notebook
函数用于在Jupyter notebook中呈现静态matplotlib图。用notebook替换inline,可以轻松获得可缩放和可调整大小的绘图。但记得这个函数要在导入matplotlib库之前调用。
%run
用%run函数在notebook中运行一个python脚本试试。
%run file.py
%%writefile
%% writefile是将单元格内容写入文件中。以下代码将脚本写入名为foo.py的文件并保存在当前目录中。
%%latex
%%latex函数将单元格内容以LaTeX形式呈现。此函数对于在单元格中编写数学公式和方程很有用。
查找并解决错误
交互式调试器也是一个神奇的功能,我把它单独定义了一类。如果在运行代码单元时出现异常,请在新行中键入%debug并运行它。 这将打开一个交互式调试环境,它能直接定位到发生异常的位置。还可以检查程序中分配的变量值,并在此处执行操作。退出调试器单击q即可。
Printing也有小技巧
如果您想生成美观的数据结构,pprint是首选。它在打印字典数据或JSON数据时特别有用。接下来看一个使用print和pprint来显示输出的示例。
让你的笔记脱颖而出
我们可以在您的Jupyter notebook中使用警示框/注释框来突出显示重要内容或其他需要突出的内容。注释的颜色取决于指定的警报类型。只需在需要突出显示的单元格中添加以下任一代码或所有代码即可。
蓝色警示框:信息提示
<p class="alert alert-block alert-info">
<b>Tip:</b> Use blue boxes (alert-info) for tips and notes.
If it’s a note, you don’t have to include the word “Note”.
</p>
黄色警示框:警告
<p class="alert alert-block alert-warning">
<b>Example:</b> Yellow Boxes are generally used to include additional examples or mathematical formulas.
</p>
绿色警示框:成功
<p class="alert alert-block alert-success">
Use green box only when necessary like to display links to related content.
</p>
红色警示框:高危
<p class="alert alert-block alert-danger">
It is good to avoid red boxes but can be used to alert users to not delete some important part of code etc.
</p>
打印单元格所有代码的输出结果
假如有一个Jupyter Notebook的单元格,其中包含以下代码行:
In [1]: 10+5
11+6
Out [1]: 17
单元格的正常属性是只打印最后一个输出,而对于其他输出,我们需要添加print()函数。然而通过在notebook顶部添加以下代码段可以一次打印所有输出。
添加代码后所有的输出结果就会一个接一个地打印出来。
In [1]: 10+5
11+6
12+7
Out [1]: 15
Out [1]: 17
Out [1]: 19
恢复原始设置:
InteractiveShell.ast_node_interactivity = "last_expr"
使用'i'选项运行python脚本
从命令行运行python脚本的典型方法是:python hello.py。但是,如果在运行相同的脚本时添加-i,例如python -i hello.py,就能提供更多优势。接下来看看结果如何。
首先,即使程序结束,python也不会退出解释器。因此,我们可以检查变量的值和程序中定义的函数的正确性。
其次,我们可以轻松地调用python调试器,因为我们仍然在解释器中:
import pdb
pdb.pm()
这能定位异常发生的位置,然后我们可以处理异常代码。
自动评论代码
Ctrl / Cmd + /自动注释单元格中的选定行,再次命中组合将取消注释相同的代码行。
删除容易恢复难
你有没有意外删除过Jupyter notebook中的单元格?如果答案是肯定的,那么可以掌握这个撤消删除操作的快捷方式。
如果您删除了单元格的内容,可以通过按CTRL / CMD + Z轻松恢复它。
如果需要恢复整个已删除的单元格,请按ESC + Z或EDIT>撤消删除单元格。
结论
在本文中,我列出了使用Python和Jupyter notebook时收集的一些小提示。我相信它们会对你有用,能让你有所收获,从而实现轻松编码!
E. Python数据分析笔记#7.3.1 字符串对象方法
“目录”
数据清洗和准备
Data Cleaning and Prepration
--------> 字符串对象方法
字符串对象方法
Python能够成为流行的数据处理语言的部分原因是其易于处理字符串和文本。大部分文本运算都直接做成了字符串对象的内置方法。
split方法可以 通过指定分隔符对字符串进行切片 。
例如,以逗号分割的字符串可以用split拆分成数段:
strip可以 去除字符串头尾指定的字符 ,默认是空白符或换行符。
strip常常与split一起使用:
利用 加法可以将字符串连接起来 :
但这种方式并不实用,毕竟字符串多了就很麻烦。一种更快 更符合Python风格的方式是是使用join方法 ,我们向join方法中传入一个列表或元组:
检测子串的最佳方法是利用Python的in关键字,还可以使用index和find。
index和find会 查找指定值的首次出现的位置 。
find和index的区别是:若找不到字符串,index将会引发一个 异常 ,find则会返回 -1 :
count可以 返回指定字串的出现次数
replace用于将 指定模式替换为另一个模式 (replace will substitute occurrences of one pattern for another)
再记录几个Python内置的字符串方法吧。
startswith和endswith: 若字符串以某个前缀(后缀)开头,则返回True :
lower和uppe: 分别将字母字符转换为小写或大写 。
ljust和rjust: 用空格(或其他字符)填充字符串的空白侧以返回符合最低宽度的字符串 。
这章终于还剩两节就结束了。
-END-
F. python大数据挖掘系列之基础知识入门 知识整理(入门教程含源码)
Python在大数据行业非常火爆近两年,as a pythonic,所以也得涉足下大数据分析,下面就聊聊它们。
Python数据分析与挖掘技术概述
所谓数据分析,即对已知的数据进行分析,然后提取出一些有价值的信息,比如统计平均数,标准差等信息,数据分析的数据量可能不会太大,而数据挖掘,是指对大量的数据进行分析与挖倔,得到一些未知的,有价值的信息等,比如从网站的用户和用户行为中挖掘出用户的潜在需求信息,从而对网站进行改善等。
数据分析与数据挖掘密不可分,数据挖掘是对数据分析的提升。数据挖掘技术可以帮助我们更好的发现事物之间的规律。所以我们可以利用数据挖掘技术可以帮助我们更好的发现事物之间的规律。比如发掘用户潜在需求,实现信息的个性化推送,发现疾病与病状甚至病与药物之间的规律等。
预先善其事必先利其器
我们首先聊聊数据分析的模块有哪些:
下面就说说这些模块的基础使用。
numpy模块安装与使用
安装:
下载地址是:http://www.lfd.uci.e/~gohlke/pythonlibs/
我这里下载的包是1.11.3版本,地址是:http://www.lfd.uci.e/~gohlke/pythonlibs/f9r7rmd8/numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl
下载好后,使用pip install "numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl"
安装的numpy版本一定要是带mkl版本的,这样能够更好支持numpy
numpy简单使用
生成随机数
主要使用numpy下的random方法。
pandas
使用 pip install pandas 即可
直接上代码:
下面看看pandas输出的结果, 这一行的数字第几列,第一列的数字是行数,定位一个通过第一行,第几列来定位:
常用方法如下:
下面看看pandas对数据的统计,下面就说说每一行的信息
转置功能:把行数转换为列数,把列数转换为行数,如下所示:
通过pandas导入数据
pandas支持多种输入格式,我这里就简单罗列日常生活最常用的几种,对于更多的输入方式可以查看源码后者官网。
CSV文件
csv文件导入后显示输出的话,是按照csv文件默认的行输出的,有多少列就输出多少列,比如我有五列数据,那么它就在prinit输出结果的时候,就显示五列
excel表格
依赖于xlrd模块,请安装它。
老样子,原滋原味的输出显示excel本来的结果,只不过在每一行的开头加上了一个行数
读取SQL
依赖于PyMySQL,所以需要安装它。pandas把sql作为输入的时候,需要制定两个参数,第一个是sql语句,第二个是sql连接实例。
读取HTML
依赖于lxml模块,请安装它。
对于HTTPS的网页,依赖于BeautifulSoup4,html5lib模块。
读取HTML只会读取HTML里的表格,也就是只读取
显示的是时候是通过python的列表展示,同时添加了行与列的标识
读取txt文件
输出显示的时候同时添加了行与列的标识
scipy
安装方法是先下载whl格式文件,然后通过pip install “包名” 安装。whl包下载地址是:http://www.lfd.uci.e/~gohlke/pythonlibs/f9r7rmd8/scipy-0.18.1-cp35-cp35m-win_amd64.whl
matplotlib 数据可视化分析
我们安装这个模块直接使用pip install即可。不需要提前下载whl后通过 pip install安装。
下面请看代码:
下面说说修改图的样式
关于图形类型,有下面几种:
关于颜色,有下面几种:
关于形状,有下面几种:
我们还可以对图稍作修改,添加一些样式,下面修改圆点图为红色的点,代码如下:
我们还可以画虚线图,代码如下所示:
还可以给图添加上标题,x,y轴的标签,代码如下所示
直方图
利用直方图能够很好的显示每一段的数据。下面使用随机数做一个直方图。
Y轴为出现的次数,X轴为这个数的值(或者是范围)
还可以指定直方图类型通过histtype参数:
图形区别语言无法描述很详细,大家可以自信尝试。
举个例子:
子图功能
什么是子图功能呢?子图就是在一个大的画板里面能够显示多张小图,每个一小图为大画板的子图。
我们知道生成一个图是使用plot功能,子图就是subplog。代码操作如下:
我们现在可以通过一堆数据来绘图,根据图能够很容易的发现异常。下面我们就通过一个csv文件来实践下,这个csv文件是某个网站的文章阅读数与评论数。
先说说这个csv的文件结构,第一列是序号,第二列是每篇文章的URL,第三列每篇文章的阅读数,第四列是每篇评论数。
我们的需求就是把评论数作为Y轴,阅读数作为X轴,所以我们需要获取第三列和第四列的数据。我们知道获取数据的方法是通过pandas的values方法来获取某一行的值,在对这一行的值做切片处理,获取下标为3(阅读数)和4(评论数)的值,但是,这里只是一行的值,我们需要是这个csv文件下的所有评论数和阅读数,那怎么办?聪明的你会说,我自定义2个列表,我遍历下这个csv文件,把阅读数和评论数分别添加到对应的列表里,这不就行了嘛。呵呵,其实有一个更快捷的方法,那么就是使用T转置方法,这样再通过values方法,就能直接获取这一评论数和阅读数了,此时在交给你matplotlib里的pylab方法来作图,那么就OK了。了解思路后,那么就写吧。
下面看看代码:
G. Python数据分析(八):农粮组织数据集探索性分析(EDA)
这里我们用 FAO(Food and Agriculture Organization) 组织提供的数据集,练习一下如何利用python进行探索性数据分析。
我们先导入需要用到的包
接下来,加载数据集
看一下数据量,
看一下数据的信息,
我们先来看一下variable,variable_full这两列的信息,
看一下统计了多少国家,
看一下有多少个时间周期,
看一下时间周期有哪些,
我们看一下某一列某个指标的缺失值的个数,比如variable是total_area时缺失值的个数,
我们通过几个维度来进行数据的分析:
我们按照上面的处理继续,现在我们想统计一下对于一个时间周期来说,不同国家在这个周期内的变化情况,
我们也可以按照国家分类,查看某个国家在不同时期的变化,
我们还可以根据属性,查看不同国家在不同周期内的变化情况,
我们还可以给定国家和指标,查看这个国家在这个指标上的变化情况,
我们还有region(区域)没有查看,我们来看一下:
通过上图可以看出,区域太多,不便于观察,我们可以将一些区域进行合并。减少区域数量有助于模型评估,可以创建一个字典来查找新的,更简单的区域(亚洲,北美洲,南美洲,大洋洲)
我们来看一下数据变化,
紧接着上面的数据处理,我们重新导入一下包,这次有一些新包,
我们看一下水资源的情况,
通过上图可以看出只有一小部分国家报告了可利用的水资源总量,这些国家中只有极少数国家拥有最近一段时间的数据,我们将删除变量,因为这么少的数据点会导致很多问题。
接下来我们看一下全国降雨指数,
全国降雨在2002年以后不再报到,所以我们也删除这个数据,
我们单独拿出一个洲来进行分析,举例南美洲,我们来看一下数据的完整性,
我们也可以指定不同的指标,
接下来,我们使用 pandas_profiling 来对单变量以及多变量之间的关系进行统计一下,
这里我们要计算的是,比如
我们按照 rural_pop 从小到大进行排序,发现的确有几个国家的农村人口是负数,
人口数目是不可能小于0,所以这说明数据有问题,存在脏数据,如果做分析预测时,要注意将这些脏数据处理一下。
接下来我们看一下偏度,我们规定,
正态分布的偏度应为零,负偏度表示左偏,正偏表示右偏。
偏度计算完后,我们计算一下峰度, 峰度也是一个正态分布,峰度不能为负,只能是正数 ,越大说明越陡峭,
接下来我们看一下,如果数据分布非常不均匀该怎么办呢,
上图是2013-2017年国家总人数的分布,通过上图我们发现,人口量少于200000(不考虑单位)的国家非常多,人口大于1200000的国家非常少,如果我们需要建模的话,这种数据我们是不能要的。这个时候我们应该怎么办呢?
通常,遇到这种情况,使用 log变换 将其变为正常。 对数变换 是数据变换的一种常用方式,数据变换的目的在于使数据的呈现方式接近我们所希望的前提假设,从而更好的进行统计推断。
接下来,我们用log转换一下,并看一下它的偏度和峰值,
可以看出偏度下降了很多,减少了倾斜。
可以发现峰度也下降了,接下来我们看一下经过log转换后的数据分布,
虽然数据还有一些偏度,但是明显好了很多,呈现的分布也比较标准。
首先我们先来看一下美国的人口总数随时间的变化,
接下来,我们查看北美洲每个国家人口总数随着时间的变化,
这个时候我们发现,一些国家由于人口数量本身就少,所以整个图像显示的不明显,我们可以改变一下参照指标,那我们通过什么标准化?我们可以选择一个国家的最小、平均、中位数、最大值...或任何其他位置。那我们选择最小值,这样我们就能看到每个国家的起始人口上的增长。
我们也可以用热度图来展示,用颜色的深浅来比较大小关系,
接下来我们分析一下水资源的分布情况,
我们可以进行一下log转换,
我们用热度图画一下,
连续值可以画成散点图,方便观看,
我们来看一下随着季节变化,人均GDP的变化情况,
相关程度:
相关度量两个变量之间的线性关系的强度,我们可以用相关性来识别变量。
现在我们单独拿出来一个指标分析是什么因素与人均GDP的变化有关系,正相关就是积极影响,负相关就是消极影响。
当我们在画图的时候也可以考虑一下利用bined设置一下区间,比如说连续值我们可以分成几个区间进行分析,这里我们以人均GDP的数量来进行分析,我们可以将人均GDP的数据映射到不同的区间,比如人均GDP比较低,比较落后的国家,以及人均GDP比较高,比较发达的国家,这个也是我们经常需要的操作,
做一下log变换,这里是25个bin
我们指定一下分割的标准,
我们还可以看一下人均GDP较低,落后国家的内部数据,下面我们看一下内部数据分布情况,用boxplot进行画图,
对于这部分的分布,我们还可以统计看一下其他指标,如下图所示,我们还可以看一下洪水的统计信息,