python数据分析基础 余本国_Python数据分析基础
本书根据作者多年教学经验编写, 条理清楚, 内容深浅适中, 尽量让读者从实例出发, 结合课后练习, 少走弯路。本书涉及的内容主要包括Python数据类型与运算、流程控制及函数与类、Pandas库的数据处理与分析等。
作者通过近三轮的教学,对Python3.x的基础知识进行了筛选和总结,特编写此书,希望能够给准备使用Python的读者提供一些方便。
本书由浅入深,比较适合那些从未接触过计算机语言的读者。每章配有大量的示例代码,希望读者在使用本书的时候,能够尽可能自己敲代码,少用复制粘贴的方法,这样有利于读者尽快进入“角色”,毕竟“拷贝得来终觉浅”。
本书的前3章是Python的基础知识;第4章是利用Pandas库对数据进行处理、分析以及实现数据可视化;在第5章还列出了Python对文件的读取、存储方法,对网络爬虫、矩阵运算也做了简单的介绍。
前言
在写作本书的时候,国内大多数参考书还是Python2.7版本,为了给在校大学生开设这门Python课程,我们选择了Python3.x,毕竟Python3.x才是未来。与其让学生们从Python2.7开始学,还不如直接从Python3.x上手,以掌握更加完善的知识。
作者通过近三轮的教学,对Python3.x的基础知识进行了筛选和总结,特编写此书,希望能够给准备使用Python的读者提供一些方便。
本书由浅入深,比较适合那些从未接触过计算机语言的读者。每章配有大量的示例代码,希望读者在使用本书的时候,能够尽可能自己敲代码,少用复制粘贴的方法,这样有利于读者尽快进入“角色”,毕竟“拷贝得来终觉浅”。
本书的前3章是Python的基础知识;第4章是利用Pandas库对数据进行处理、分析以及实现数据可视化;在第5章还列出了Python对文件的读取、存储方法,对网络爬虫、矩阵运算也做了简单的介绍。
作者在编写本书的过程中,得到了Python工程师齐伟的帮助。在开设这门课的时候,齐伟通过视频的形式与我们一起分享了Python开发经验。本书在完稿时,得到了研究生闫青、陈文华、马秀、樊宇凯和卢超在文字校对上的帮助。
最后感谢广大读者选择了本书,预祝您顺利学会Python语言。
编者
目录
第1章Python简介1
1.1安装Python2
1.2Python2和Python3的区别5
本章小结8
练习8
第2章Python数据类型与运算9
2.1数据类型11
2.2运算符与功能命令12
2.2.1算数运算符12
2.2.2比较运算符12
2.2.3赋值运算符13
2.2.4常量与变量15
2.2.5字符串16
2.2.6字符串索引与切片18
2.2.7输入和输出20
2.2.8原始字符串21
2.2.9range22
2.2.10元组、列表、字典、集合22
2.2.11格式化输出37
2.2.12strip、split40
2.2.13divmod()42
2.2.14join()42
本章小结43
练习47
第3章流程控制及函数与类49
3.1流程控制52
3.1.1if-else52
3.1.2for循环53
3.1.3while循环54
3.1.4continue和break54
3.2遍历56
3.2.1range()函数56
3.2.2列表与元组的遍历59
3.3函数61
3.3.1函数的定义61
3.3.2函数的使用62
3.3.3形参和实参63
3.3.4参数的传递和改变63
3.3.5变量的作用域66
3.3.6函数参数的类型68
3.3.7任意个数的参数70
3.3.8函数调用71
3.4函数式编程74
3.4.1lambda74
3.4.2reduce()75
3.4.3filter()76
3.4.4map()77
3.4.5行函数77
3.5常用的内置函数78
3.5.1sum78
3.5.2zip79
3.5.3enumerate80
3.5.4max和min81
3.5.5eval81
3.5.6判断函数83
3.6常见的错误显示86
3.6.1常见的错误类型87
3.6.2初学者常犯的错误89
3.6.3try93
3.6.4assert95
3.6.5raise95
3.7模块和包96
3.7.1模块(module)96
3.7.2包(package)100
3.7.3datetime和calendar模块101
3.7.4urllib模块105
3.8类106
本章小结109
练习109
第4章Python数据分析实战113
4.1关于Pandas114
4.1.1什么是Pandas114
4.1.2Pandas中的数据结构114
4.1.3Pandas的安装方法114
4.1.4在Anaconda中安装
第三方库118
4.2数据准备119
4.2.1数据类型119
4.2.2数据结构120
4.2.3数据导入128
4.2.4数据导出131
4.3数据处理133
4.3.1数据清洗133
4.3.2数据抽取138
4.3.3排名索引147
4.3.4数据合并151
4.3.5数据计算154
4.3.6数据分组156
4.3.7日期处理157
4.4数据分析162
4.4.1基本统计162
4.4.2分组分析163
4.4.3分布分析165
4.4.4交叉分析167
4.4.5结构分析169
4.4.6相关分析170
4.5数据可视化172
4.5.1饼图172
4.5.2散点图174
4.5.3折线图176
4.5.4柱形图180
4.5.5直方图183
本章小结184
练习184
第5章其他187
5.1文件读写操作188
5.1.1文件的读写方法189
5.1.2文件的其他方法190
5.1.3文件的存储和读取190
5.2with语句192
5.3Anaconda下安装statsmodels包193
5.4关于Spyder界面恢复默认状态的
处理195
5.5关于Python计算精度的问题197
5.6矩阵运算200
5.6.1创建矩阵200
5.6.2矩阵属性200
5.6.3解线性方程组201
5.6.4线性规划最优解202
5.7正则表达式203
5.8使用urllib打开网页209
5.9网页数据抓取212
5.10读取文档217
本章小结222
练习222
参考文献224
第2章Python数据类型与运算
我们先了解Python的几个语法常识。
1.代码注释方法
(1)在一行中,“#”后的语句不再执行,而表示被注释。
(2)如果要进行大段的注释,可以使用三个单引号(’’’)或者双引号(”””)将注释内容包围。单引号和双引号在使用上没有本质的差别。
【例2-1】三个双引号注释段落:
#-*-coding:utf-8-*-
"""
CreatedonSunMar1321:20:062016
@author:yubg
"""
lis=[1,2,3]
foriinlis:#半角状态冒号不能少,下一行注意缩进
i+=1
print(i)
本例不需要上机操作,仅为展示用法。
2.用缩进来表示分层
Python不像C语言那样用{}来表示语句块,而是通过让代码缩进4个空格来表示分层,当然也可以使用Tab键,但不要混合使用Tab键和空格来进行缩进,否则会使程序在跨平台时不能正常工作,官方推荐的做法是使用四个空格。
一般来说,行尾遇到“:”就表示下一行缩进的开始,如例2-1中的“foriinlis”行尾有冒号,下一行的“i+=1”就需要缩进四个空格。
3.语句断行
一般来说,Python中的一条语句占一行,在每条语句的结尾处不需要使用分号(;)。但在Python中也可以使用分号,表示将两条简单语句写在一行。但如果一条语句较长,要分几行来写,可以使用“\”来进行换行。分号还有个作用,使用在一行语句的末尾,表示对本行语句的结果不打印输出。一般地,系统能够自动识别换行,如在一对括号中间或三引号之间均可换行。例如下面代码中的第三行较长,若要对其分行,则必须在括号内进行(包括圆括号、方括号和花括号):
frompandasimportDataFrame#导入模块中的函数,后面再讲
frompandasimportSeries
df=DataFrame({'age':Series([26,85,64]),'name':Series(['Ben','Joh','Jef'])})
print(df)
分行后的第二行一般空四个空格,在3.5版本中已经优化,可以不空四个空格,但是在较低的3.x版本中不空四个空格会报错。
frompandasimportDataFrame
frompandasimportSeries
df=DataFrame({'age':Series([26,85,64]),#此语句分成了两行
'name':Series(['Ben','Joh','Jef'])})
print(df)
4.print()的作用
print()会在输出窗口中显示一些文本或结果,便于验证和显示数据。
5.使用转义符
如果需要在一个字符串中嵌入一个引号,该如何操作?
有两种方法:可以在引号前加反斜杠(\),或者用不同的引号包围这个引号。
例如:
>>>s1='I\'amaboy.'#可以使用转义符\
>>>print(s1)
I'amaboy.
>>>s2="I'amaboy."#也可以用不同的引号包围起来,此处用双引号是为了区分单引号
>>>print(s2)
I'amaboy.
>>>
转义符详见本章2.2.5小节的内容。
2.1数据类型
Python总共有6种数据类型,分别是数字型(Numbers)、字符串型(String)、列表型(List)、元组型(Tuple)、集合型(Sets)和字典型(Dictionaries)。
数字型又可划分为整数型(int)、浮点型(float)、布尔型(bool)和复数型(complex)。
在Python中有4种类型的数——整数、长整数、浮点数和复数。
例如,2是一个整数的例子。
长整数不过是大一些的整数。
3.23和52.3E-4是浮点数的例子,E标记表示10的幂。52.3E-4表示52.3×10-4。
(-5+4j)和(2.3-4.6j)表示的是复数。
……
相关文章:

stm32F042 (二) 按键触发中断
已经实现GPIO口输出高低电平控制LED,这里实现按键触发中断来改变LED闪亮的频率,因为PB3连着LED,所以PB3的输出模式没有改变,随意选一个GPIO口PA7接按键产生中断。因为nucleo开发板是裸板,所以按键、上拉电阻是另找在面…

区块链和智能合约的关系
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 尽管比特币(Bitcoin)和以太坊(Ethereum)是经常被一起提及的两个词,但实际上࿰…

repo同步代码_iTOP-4412开发板android4.0代码下载和编译
Android4.0 源码可以从光盘,网盘获取稳定版本,也可以从 GitHub 下载我们的开发版本。GitHub 仅提供源码下载,不提供二进制下载,二进制文件存放在光盘和网盘中。基于迅为4412开发板6.3.1.1 repo 下载android 代码管理不同于 uboot,…

vue项目构建实战基础知识:SPA理解/RESTful接口介绍/static目录配置/axios封装/打包时map文件去除...
一、SPA 不是指水疗。是 single page web application 的缩写。中文翻译为 单页应用程序 或 单页Web应用,更多解释请自行搜索。 所有的前端人员都应该明白我们的页面的 url 构成:http://www.fengcms.com/index.html?namefungleo&old32#mylove/is/wo…

神奇的输入 while(cin....)如何在遇见换行之后进入下一层循环读入
1 cin>>m>>n;2 for(int i1;i<m;i){4 int x0;5 char ch ;6 while(ch!10) //在遇到换行之后进入下一层循环读入。7 {8 x;9 cin>>c[x]; 10 chgetchar(); 11 } 神奇的输入。 get skill!转载于:https://www.cnblogs.com/zyker/p/588…

区块链中的“智能合约”有何应用?
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 如刺金般闪耀的区块链时代,投资者的热潮还将持续升温,与此同时金融的大佬已经开始注意到区块链应用落地场景的实现ÿ…

米勒罗宾素性测试(Miller–Rabin primality test)
1 #include<iostream> //该程序为哥德巴赫猜(想输出所有的组合)2 #include<cmath>3 #include<cstdlib>4 #include<ctime>5 #include<cstdio>6 7 using namespace std;8 9 typedef unsigned long long ull; 10 typedef u…

Linux Linux程序练习十一(网络编程大文件发送UDP版)
//网络编程发送端--大文件传输(UDP) #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h>#include <sys/types.h> #include <sys/socket.h> #include <n…

iic通信原理_电子知识之IIC通信原理和协议分享
IIC 的一些特征: 两条总线:串行数据总线(SDA)和串行时钟总线(SCL)真正的多主机总线连接到相同总线的ic数量只受到总线的最大电容400pF限制。串行8位双向数据在标准模式下可达100K bit/s快速模式400K bit/s,高速模式下3.4Mbit/s.数据有效性规定࿱…

以太坊核心概念
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 以太坊虚拟机(EVM) 以太坊虚拟机(EVM)是以太坊中智能合约的运行环境。它不仅被沙箱封装起来&#…

使用rest_framework写api接口的一些注意事项(axios发送ajax请求)
1. 类继承GenericAPIView,定义queryset 印象深刻的事:由于原来对于继承关系不太清楚,写接口 APIView/泛指GenericAPIView不太关注queryset没有设置渲染器:默认 [JSONRenderer,BrowsableAPIRenderer]BrowsableAPIRendererÿ…

iir数字滤波器_手把手教系列之一阶数字滤波器设计实现(附代码)
[导读] 前面分享了 IIR/FIR/mean/梳状数字滤波器的具体设计实现,这几种使用起来或许觉得计算量大,相对复杂。实际工程应用中通常有必要过滤来自传感器或音频流的数据,以抑制不必要的噪声。有的应用场景,可能只需要一个最简单的一阶…

正则表达式中$1,$2 ===算是什么意思
$1,$2...是表示的小括号里的内容 $1是第一个小括号里的 ,$2是第2个小括号里的 比如 /gai([\w]?)over([\d])/ 匹配 gainover123 $1 括号里的 n $2 第2个括号里的 123转载于:https://www.cnblogs.com/vertko/p/5888902.html

为什么以太坊能成为区块链2.0的代表之作?
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链的学习进入到第四天,前三天学习比特币,分别从比特币的前世、货币属性和背后的区块链技术学习。 比特币是区块链的1…
(转)搭建企业内部yum仓库(centos6+centos7+epel源)
搭建企业内部yum仓库(centos6centos7epel源) 原文:https://www.cnblogs.com/nulige/p/6081192.html https://www.linuxidc.com/Linux/2017-11/148723.htm---------部署yum仓库与定制rpm包 1. 创建yum仓库目录mkdir -p /data/yum_data/cd /data/yum_data/#可以上传rp…

vs按f5没反应_《死神vs火影》中最受欢迎的游戏角色,仙鸣当之无愧上榜
hello!大家好,又到了一日一度的杨某讲游戏环节啦,赶紧系好安全带,准备上车吧。《死神vs火影》作为一款深受广大群众欢迎的街机游戏,自然而然地涌现出了一系列知名游戏角色。那么,大多数人心目中最喜欢&…
IEC61850笔记--IEC61850应用入门(二)
IEC61850标准学习和调试,测试的记录文档,主要参考了IEC61850标准文档,《IEC61850应用入门(第二版)》,开源代码libIEC61850及libIEC61850说明文档。 IEC61850标准内容参考IEC61850标准文档,以及IEC61850标准介绍文档《I…

区块链赚钱的9种方式
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 物联网火了一段时间,人工智能火了一段时间,无人驾驶火了一段时间。现在,通通被区块链的风头盖住了,都…

7、在对象内部尽量直接访问实例变量
本文概要: 1、首先给出结论是:除了几种特殊情况外,在读取实例变量的时候采用直接访问的形式,而在设置实例变量的时候通过属性来做。 2、讲解了使用getter、setter的好处。 3、列举了几种上面提到的特殊情况:有时不能使…

linux python2和python3共存_linux-Centos7安装python3并与python2共存
1.查看是否已经安装PythonCentOS 7.2 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5。使用 python -V 命令查看一下是否安装Python然后使用命令 which python 查看一下Python可执行文件的位置可见执行文件在/usr/bin/ 目录下,切换到该目录…

9月20号作业
转载于:https://www.cnblogs.com/kangy123/p/5890515.html

区块链以太坊五大开发工具,你喜欢哪个?
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 以太坊(Ethereum)是运行智能合约的最受欢迎的分布式平台之一。因为虚拟货币近年来的发展,以太坊以区块链为基础引…

sublime text 3 中改变.vue文件的颜色
1、按 CtrlShiftP 2、输入install,选择install Package 3、输入vue,选择 vue syntax hightlight 如果上述方法不起作用,可以选择在下面连接中下载文件,手动安装 如何让你的.vue在sublime text 3 中变成彩色? 转载于:https://www…

nodejs端口被占用。
I had the same issue. I ran: $ ps aux | grep node to get the process id, then: $ sudo kill -9 followed by the process id to kill the process.转载于:https://www.cnblogs.com/facial/p/5893138.html

戴尔电脑管家_2020年笔记本电脑推荐指南:笔记本电脑应该怎么选?什么牌子的笔记本电脑更值得入手?...
笔记本电脑已经成为家家户户必不可少的移动装置了,作为一名互联网行业从业者,无论是居家还是工作也得有一台性价比较高的笔记本,才能满足工作需要了。接下来,跟大家唠一唠笔记本电脑的那些事儿~我将从以下几个方面进行介绍&#x…

行走在区块链上的智能合约
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 我和你打一个赌,我赌明天是雨天,你赌是晴天,赌注100大洋。假设明天是晴天,然后你跑过来管我要100大洋…

安装 telnet
yum install telnet-server yum install telnet service xinetd restart 查询是否正常启动telnet netstat -tnl |grep 23 telnet服务默认使用的23端口 转载于:https://www.cnblogs.com/gaobo543013306/p/8922021.html

python中json dumps_python中json.loads,dumps,jsonify使用
search_info {id:132,user_role:3}print type(search_info) #输出 #转为string用dumpsprint type(json.dumps(search_info)) #输出 #string转 dict用 loads()print type(json.loads(json.dumps(search_info))) #输出 如果前后台通过接口交互时,返回给前台json格式数…

区块链中的智能合约是什么?
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 “智能合约是一套以数字形式定义的承诺,承诺控制着数字资产并包含了合约参与者约定的权利和义务,由计算机系统自动执行。”…

Python学习【第七篇】基本数据类型
基本数据类型 bytes数据类型 Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别…