python数据分析基础课后答案清华大学出版社(python数据分析基础

http://www.itjxue.com  2023-04-04 09:39  来源:未知  点击次数: 

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系统中安装Anaconda 9

1.3.3 在Linux系统中安装Anaconda 12

任务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数组对象ndarray 21

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

附录A 267

附录B 270

参考文献 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 jiebaimport 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)

跪求 清华大学出版社的数据结构(C语音版)(第2版)唐国民 王国钧 主编的课后习题答案。

1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

答案:

数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。

数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。

数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。

数据对象:是性质相同的数据元素的集合,是数据的一个子集。例如:整数数据对象是集合N={0,±1,±2,?},字母字符数据对象是集合C={‘A’,‘B’,?,‘Z’, ‘a’,‘b’,?,‘z’},学生基本信息表也可是一个数据对象。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。

逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。

存储结构:数据对象在计算机中的存储表示,也称为物理结构。

抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。

2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

答案:

例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继。学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。。。完整答案出处

数据结构_C语言版_第2版_唐国民_王国钧_课后答案_清华大学出版社

;tid=100156fromuid=36878

(出处: 答案家)

python数据分析与应用第三章代码3-5的数据哪来的

savetxt

import numpy as np

i2 = np.eye(2)

np.savetxt("eye.txt", i2)

3.4 读入CSV文件

# AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800

c,v=np.loadtxt('data.csv', delimiter=',', usecols=(6,7), unpack=True) #index从0开始

3.6.1 算术平均值

np.mean(c) = np.average(c)

3.6.2 加权平均值

t = np.arange(len(c))

np.average(c, weights=t)

3.8 极值

np.min(c)

np.max(c)

np.ptp(c) 最大值与最小值的差值

3.10 统计分析

np.median(c) 中位数

np.msort(c) 升序排序

np.var(c) 方差

3.12 分析股票收益率

np.diff(c) 可以返回一个由相邻数组元素的差

值构成的数组

returns = np.diff( arr ) / arr[ : -1] #diff返回的数组比收盘价数组少一个元素

np.std(c) 标准差

对数收益率

logreturns = np.diff( np.log(c) ) #应检查输入数组以确保其不含有零和负数

where 可以根据指定的条件返回所有满足条件的数

组元素的索引值。

posretindices = np.where(returns 0)

np.sqrt(1./252.) 平方根,浮点数

3.14 分析日期数据

# AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800

dates, close=np.loadtxt('data.csv', delimiter=',', usecols=(1,6), converters={1:datestr2num}, unpack=True)

print "Dates =", dates

def datestr2num(s):

return datetime.datetime.strptime(s, "%d-%m-%Y").date().weekday()

# 星期一 0

# 星期二 1

# 星期三 2

# 星期四 3

# 星期五 4

# 星期六 5

# 星期日 6

#output

Dates = [ 4. 0. 1. 2. 3. 4. 0. 1. 2. 3. 4. 0. 1. 2. 3. 4. 1. 2. 4. 0. 1. 2. 3. 4. 0.

1. 2. 3. 4.]

averages = np.zeros(5)

for i in range(5):

indices = np.where(dates == i)

prices = np.take(close, indices) #按数组的元素运算,产生一个数组作为输出。

a = [4, 3, 5, 7, 6, 8]

indices = [0, 1, 4]

np.take(a, indices)

array([4, 3, 6])

np.argmax(c) #返回的是数组中最大元素的索引值

np.argmin(c)

3.16 汇总数据

# AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800

#得到第一个星期一和最后一个星期五

first_monday = np.ravel(np.where(dates == 0))[0]

last_friday = np.ravel(np.where(dates == 4))[-1]

#创建一个数组,用于存储三周内每一天的索引值

weeks_indices = np.arange(first_monday, last_friday + 1)

#按照每个子数组5个元素,用split函数切分数组

weeks_indices = np.split(weeks_indices, 5)

#output

[array([1, 2, 3, 4, 5]), array([ 6, 7, 8, 9, 10]), array([11,12, 13, 14, 15])]

weeksummary = np.apply_along_axis(summarize, 1, weeks_indices,open, high, low, close)

def summarize(a, o, h, l, c): #open, high, low, close

monday_open = o[a[0]]

week_high = np.max( np.take(h, a) )

week_low = np.min( np.take(l, a) )

friday_close = c[a[-1]]

return("APPL", monday_open, week_high, week_low, friday_close)

np.savetxt("weeksummary.csv", weeksummary, delimiter=",", fmt="%s") #指定了文件名、需要保存的数组名、分隔符(在这个例子中为英文标点逗号)以及存储浮点数的格式。

0818b9ca8b590ca3270a3433284dd417.png

格式字符串以一个百分号开始。接下来是一个可选的标志字符:-表示结果左对齐,0表示左端补0,+表示输出符号(正号+或负号-)。第三部分为可选的输出宽度参数,表示输出的最小位数。第四部分是精度格式符,以”.”开头,后面跟一个表示精度的整数。最后是一个类型指定字符,在例子中指定为字符串类型。

numpy.apply_along_axis(func1d, axis, arr, *args, **kwargs)

def my_func(a):

... """Average first and last element of a 1-D array"""

... return (a[0] + a[-1]) * 0.5

b = np.array([[1,2,3], [4,5,6], [7,8,9]])

np.apply_along_axis(my_func, 0, b) #沿着X轴运动,取列切片

array([ 4., 5., 6.])

np.apply_along_axis(my_func, 1, b) #沿着y轴运动,取行切片

array([ 2., 5., 8.])

b = np.array([[8,1,7], [4,3,9], [5,2,6]])

np.apply_along_axis(sorted, 1, b)

array([[1, 7, 8],

[3, 4, 9],

[2, 5, 6]])

3.20 计算简单移动平均线

(1) 使用ones函数创建一个长度为N的元素均初始化为1的数组,然后对整个数组除以N,即可得到权重。如下所示:

N = int(sys.argv[1])

weights = np.ones(N) / N

print "Weights", weights

在N = 5时,输出结果如下:

Weights [ 0.2 0.2 0.2 0.2 0.2] #权重相等

(2) 使用这些权重值,调用convolve函数:

c = np.loadtxt('data.csv', delimiter=',', usecols=(6,),unpack=True)

sma = np.convolve(weights, c)[N-1:-N+1] #卷积是分析数学中一种重要的运算,定义为一个函数与经过翻转和平移的另一个函数的乘积的积分。

t = np.arange(N - 1, len(c)) #作图

plot(t, c[N-1:], lw=1.0)

plot(t, sma, lw=2.0)

show()

3.22 计算指数移动平均线

指数移动平均线(exponential moving average)。指数移动平均线使用的权重是指数衰减的。对历史上的数据点赋予的权重以指数速度减小,但永远不会到达0。

x = np.arange(5)

print "Exp", np.exp(x)

#output

Exp [ 1. 2.71828183 7.3890561 20.08553692 54.59815003]

Linspace 返回一个元素值在指定的范围内均匀分布的数组。

print "Linspace", np.linspace(-1, 0, 5) #起始值、终止值、可选的元素个数

#output

Linspace [-1. -0.75 -0.5 -0.25 0. ]

(1)权重计算

N = int(sys.argv[1])

weights = np.exp(np.linspace(-1. , 0. , N))

(2)权重归一化处理

weights /= weights.sum()

print "Weights", weights

#output

Weights [ 0.11405072 0.14644403 0.18803785 0.24144538 0.31002201]

(3)计算及作图

c = np.loadtxt('data.csv', delimiter=',', usecols=(6,),unpack=True)

ema = np.convolve(weights, c)[N-1:-N+1]

t = np.arange(N - 1, len(c))

plot(t, c[N-1:], lw=1.0)

plot(t, ema, lw=2.0)

show()

3.26 用线性模型预测价格

(x, residuals, rank, s) = np.linalg.lstsq(A, b) #系数向量x、一个残差数组、A的秩以及A的奇异值

print x, residuals, rank, s

#计算下一个预测值

print np.dot(b, x)

3.28 绘制趋势线

x = np.arange(6)

x = x.reshape((2, 3))

x

array([[0, 1, 2], [3, 4, 5]])

np.ones_like(x) #用1填充数组

array([[1, 1, 1], [1, 1, 1]])

类似函数

zeros_like

empty_like

zeros

ones

empty

3.30 数组的修剪和压缩

a = np.arange(5)

print "a =", a

print "Clipped", a.clip(1, 2) #将所有比给定最大值还大的元素全部设为给定的最大值,而所有比给定最小值还小的元素全部设为给定的最小值

#output

a = [0 1 2 3 4]

Clipped [1 1 2 2 2]

a = np.arange(4)

print a

print "Compressed", a.compress(a 2) #返回一个根据给定条件筛选后的数组

#output

[0 1 2 3]

Compressed [3]

b = np.arange(1, 9)

print "b =", b

print "Factorial", b.prod() #输出数组元素阶乘结果

#output

b = [1 2 3 4 5 6 7 8]

Factorial 40320

print "Factorials", b.cumprod()

#output

(责任编辑:IT教学网)

更多