目录
一、安装环境
python介绍
anaconda介绍
jupyter notebook介绍
anaconda3 环境安装
解决JuPyter500:Internal Server Error问题-CSDN博客
Jupyter notebook快捷键操作大全
二、Python基础入门
数据类型与变量
数据类型
变量及赋值
布尔类型与逻辑运算
输入输出
数据结构
列表(list)
元组(tuple)
字符串(string)
集合(set)
字典(dict)
字典取值赋值
字典遍历编辑
字典嵌套
选择语句
双分支条件语句
多分支条件语句
循环语句
for循环
while循环
函数
函数定义与调用
函数的不同种类的参数
函数的递归调用
Lambda表达式&列表表达式
lambda表达式编辑
列表表达式
Map和Filter
Iterables与Iterators
类面向对象
类的定义
类的实例(对象)
类的访问限制
类的继承
类的多态
三、基于seaborn库的数据分析
Numpy与数组(矩阵)
安装方法:
一维矩阵
多维矩阵
随机矩阵
Pandas与数据表
DataFrame
np.array -> dataframe
dicts --> dataframe
读数据head()、tail() & 取数据loc()、iloc()
Using loc or iloc to access the elements
convert Dataframes into array
读取CSV文件&获取基本表信息
Reading CSV
URL to CSV
Read Json to CSV
convert Json to csv
convert Json to different json formats
Reading HTML编辑
Reading Excel
Reading Pickling 编辑
MatplotLib数据分析
安装方法:
导入函数库
线图编辑
分割子图
线图绘制函数图像
散点图
柱状图
直方图
箱线图
热力图
小提琴图
饼图
Seaborn数据分析
导入seaborn库
加载数据集
关系类图表-散点图(scatterplot)
关系类图表-折线图(lineplot)
分类图表-分类散点图(stripplot)
分类图表-分类箱图(boxplot)
分类图表-小提琴图(violinplot)
Categorical Plots分类图
分布图-直方图(histogram)
分布图-核密度估计图(kde plot)
Dist plot分布图
Correlation with Heatmap相关性热图
JoinPlot联合图
Pair plot配对图
划分网格FacetGrid()
Univariate,Bivariate,MultiVariate Analysis & Histograms
数据预处理(数据加工)
数据分析
Python具有多个优点,包括:
1. 语法简单:Python的语法设计直观且易于学习,相较于其他编程语言更为易上手。
2. 开源且免费:Python是开源的,这意味着开发者可以自由地使用和改变Python,并且不需要支付任何费用。
3. 面向对象:Python既支持面向过程编程,也支持面向对象编程,这使得它的应用范围非常广泛。
4. 良好的扩展性:Python能够很方便地与其他语言集成,因此被赞誉为“胶水语言”。
5. 丰富的库和框架:Python拥有大量的内置库和第三方库,可以帮助开发者快速实现各种功能。然而,Python也存在一些缺点:
1. 运行速度慢:由于Python是解释型语言,所以相比于编译型语言,其运行效率较低。
2. 不适合高级编程:虽然Python易于上手,但对于高度优化的程序来说,Python可能不是最佳选择。
3. 全局解释器锁(GIL):Python的解释器(CPython)存在全局解释器锁的问题,这会限制多线程的并行执行。
4. 编码规范不统一:由于Python是开源的,因此没有统一的编码规范,这可能导致代码风格混乱。
Anaconda是一个开源的Python发行版本,其特点在于专注于数据分析,包含了conda、Python以及180多个科学包及其依赖项。它主要用于处理科学计算相关的任务,如数据分析和机器学习开发等。
Anaconda的一大优势是其强大的包管理功能。利用conda,开发者可以方便地安装、切换和管理第三方包及其环境。此外,Anaconda还提供了创建、删除虚拟环境的功能,使得不同项目的运行环境得以隔离,避免了不同库之间的冲突。
然而,需要注意的是,尽管Anaconda在数据科学领域表现优秀,但对于其他Python应用场景,它可能并非最佳选择。如果你仅仅是为了学习Python或者进行一些简单的开发任务,使用基础的Python发行版可能会更加轻便灵活。
Jupyter Notebook是一个开源的交互式笔记本,支持运行多种编程语言,包括但不限于Python、RJupyter Notebook是一个开源的交互式笔记本,支持运行多种编程语言,包括但不限于Python、R、Julia和Scala等。它提供了一个基于网页的用户界面,允许用户在网页页面中直接编写代码、运行代码,以及查看结果。此外,Jupyter Notebook还支持Markdown语法和LaTeX数学公式,使得用户可以方便地编写包含代码、方程式、可视化和文本的复杂文档。
Jupyter Notebook的主要特点包括:支持代码与文本的混合编辑,可以实时查看代码运行结果,以交互方式进行数据探索和可视化分析,以及支持丰富的扩展功能。这些特性使得Jupyter Notebook在教学、科研和工业等领域得到了广泛的应用,特别是在数据分析和机器学习等领域,Jupyter Notebook已经成为了一个重要的开发工具。
登录anaconda官网
Anaconda | The World’s Most Popular Data Science Platform
点击免费下载
如果不想改盘可以直接无脑安装在C盘
安装好后可以使用图形化导航启动(但是不提倡这种方式:一是因为图像化软件占用内存。二是运行缓慢)
更推荐下面这种运行方式:
命令行窗口启动项目
转移到工作目录
输入dir指令可以看到文件下面的全部项目目录
使用命令行输入指令:jupyter notebook
可以看到浏览器端显示出磁盘下面相同的目录
如果启用jupyter遇到报错500的问题,参考以下方案:
新建.ipynb即可进行笔记、编译、运行代码。
选择代码块,shift+enter可以快速运行代码
**常用的有:
A——向上添加单元格;
B——向下添加单元格;
X——剪切单元格
shift+回车——运行代码块;
编译模式下:shift+tab——查看函数功能
选中代码按下Tab键——代码整体缩进一格
ctrl+/——快速注释
Y: 把单元格变成代码快
M: 把单元格变成 Markdown
命令行模式(按 Esc 生效)编辑快捷键
F: 查找并且替换
Ctrl-Shift-F: 打开命令配置
Ctrl-Shift-P: 打开命令配置
Enter: 进入编辑模式
P: 打开命令配置
Shift-Enter: 运行单元格, 选择下面的单元格
Ctrl-Enter: 运行选中的单元格
Alt-Enter: 运行单元格并且在下面插入单元格
Y: 把单元格变成代码快
M: 把单元格变成 Markdown
R: 清除单元格格式
1: 把单元格变成标题 1
2: 把单元格变成标题 2
3: 把单元格变成标题 3
4: 把单元格变成标题 4
5: 把单元格变成标题 5
6: 把单元格变成标题 6
K: 选择上面的单元格
上: 选择上面的单元格
下: 选择下面的单元格
J: 选择下面的单元格
Shift-K: 扩展上面选择的单元格
Shift-上: 扩展上面选择的单元格
Shift-下: 扩展下面选择的单元格
Shift-J: 扩展下面选择的单元格
Ctrl-A: select all cells
A: 在上面插入单元格
B: 在下面插入单元格
X: 剪切选择的单元格
C: 复制选择的单元格
Shift-V: 粘贴到上面
V: 粘贴到下面
Z: 撤销删除单元格
D,D: 删除选中单元格
Shift-M: 合并选中单元格, 如果只有一个单元格被选中
Ctrl-S: 保存并建立检查点
S: 保存并建立检查点
L: 切换行号
O: 显示/隐藏选定单元格的输出
Shift-O: 切换选中单元格的输出为滚动
H: 显示键盘快捷键
I,I: 中断内核
0,0: 重启内核(带确认对话框)
Esc: 关闭分页器
Q: 关闭分页器
Shift-L: 在所有单元格中切换行号,并保持设置
Shift-空格: 向上滚动
空格: 向下滚动
编辑模式(按 Enter 生效)
Tab: 代码补全或缩进
Shift-Tab: 工具提示
Ctrl-]: 缩进
Ctrl-[: 取消缩进
Ctrl-A: 全选
Ctrl-Z: 撤销
Ctrl-/: 注释
Ctrl-D: 删除整行
Ctrl-U: 撤销选择
Insert: 切换重写标志
Ctrl-Home: 跳到单元格起始处
Ctrl-上: 跳到单元格起始处
Ctrl-End: 跳到单元格最后
Ctrl-下: 跳到单元格最后
Ctrl-左: 往左跳一个单词
Ctrl-右: 往右跳一个单词
Ctrl-退格: 删除前面的单词
Ctrl-Delete: 删除后面的单词
Ctrl-Y: 重做
Alt-U: 重新选择
Ctrl-M: 进入命令行模式
Ctrl-Shift-F: 打开命令配置
Ctrl-Shift-P: 打开命令配置
Esc: 进入命令行模式
Shift-Enter: 运行单元格, 选择下面的单元格
Ctrl-Enter: 运行选中的单元格
Alt-Enter: 运行单元格并且在下面插入单元格
Ctrl-Shift-Minus: split cell at cursor(s)
Ctrl-S: 保存并建立检查点
下: 光标下移
上: 光标上移
关闭资源整理自——jupyter notebook 快捷键 - 知乎
数据类型
Python中的数据类型可以分为以下八种基本类型:布尔型(bool)、整数型(int)、浮点数型(float)、字符串(String)、列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary)。
布尔型(bool),也称为布尔类型,是Python的一种基础数据类型。在Python中,布尔型用bool表示,bool类是int类的子类。它主要用来表示逻辑上的真或假,即存在或不存在的情况。具体来说,布尔类型提供了两个布尔值:True和False。其中,True代表真(对)或存在,False代表假(错)或不存在。
整数型(int):一种用于表示整数的数据类型。
浮点数型(float):一种用于表示浮点数的数据类型。
字符串(String): 字符串是由字符组成的不可变序列。可以用单引号(' ')、双引号(" ")或三引号(''' '''或""" """)来表示字符串。
列表(List): 列表是一个有序的元素集合,可以包含任何类型的项目,并且可以进行修改。列表用方括号([])表示。
元组(Tuple): 元组与列表类似,但是元组是不可变的,一旦被声明,就不能修改。元组用圆括号(())表示。
集合(Set): 集合是一个无序的不重复元素序列。可以使用set()函数创建集合,或者使用大括号{}创建集合。注意:集合是无序的,且元素不能重复。
字典(Dictionary): 字典是一种可变的、无序的键值对集合。字典用大括号{}表示,每个元素是一个键值对。
变量及赋值
在Python编程语言中,变量是用来存储数据的容器。其基本概念、命名规范、作用域、类型等是编程的基础部分。Python中的变量类型多样,包括数字(如整数和浮点数)、字符串、列表、元组、字典等。
创建变量时,需要指定变量名和值。例如,创建一个名为num的整数型变量,可以写成num = 10。这里,=是赋值符号,其左侧是变量名,右侧是要赋给变量的值。
Python还允许多重赋值,即一次为多个变量赋值。例如,a, b = 1, 2就同时创建了两个变量a和b,并分别赋值为1和2。此外,Python也支持列表和字典这样的复合数据类型,可以为这些复合数据类型的每一个元素或键值对分别赋值。
需要注意的是,Python中的变量其实是对对象的引用,我们通过变量名来操作对象。当一个变量被赋予一个新的对象引用时,原对象将不再被使用。此外,Python还有全局变量和局部变量的概念,全局变量是在函数外部定义的变量,其作用域是整个程序;而局部变量是在函数内部定义的变量,其作用域仅限于函数内部。
在Python编程语言中,布尔类型(bool)是一种基本的数据类型,它只有两个值:True和False。这种类型的变量通常用于表示逻辑判断的结果,比如真假、存在与否等。
与布尔类型密切相关的是逻辑运算。Python支持的逻辑运算主要有以下三种:
与运算(and):只有当两个布尔值都为True时,结果才为True。例如,True and True的结果为True,而True and False或者False and True的结果都为False。
或运算(or):只要有一个布尔值为True,结果就为True。例如,True or True的结果为True,而True or False的结果为True,False or False的结果为False。
非运算(not):对一个布尔值取反,True变为False,False变为True。
Python中的数据结构主要包括列表、元组、字符串、字典和集合等。列表(list):是最常用的数据类型,可以对任意对象进行操作,如添加、删除和修改。同时,列表是可变的,即可以修改和扩充。此外,列表还可以当作堆栈或队列使用。
元组(tuple):与列表类似,但是元组是不可变的,即不能修改和扩充。不过,元组可以当作列表使用。
字符串(string):也是一种不可变的数据类型,不能修改和扩充。字符串是由字符组成的序列,可以当作列表使用。
集合(set):是另一种可变的数据类型,可以插入和删除。集合是由唯一元素组成的无序集合,可以进行集合运算和判断。例如,可以使用交集、并集、差集等运算。
以上这些数据结构都有各自的方法和用法,需要根据实际编程需求来选择和使用。字典(dict):是一种可变的数据类型,可以插入和删除。字典是由键值对组成的无序集合,每个键对应一个值,通过键来访问值。字典的实现是Python的标准库中的dict,可以通过花括号、字典表达式和字典解析式来创建和操作。
python中使用下划线命名的规则python中使用下划线命名的规则_python下划线命名-CSDN博客
列表(list):是最常用的数据类型,可以对任意对象进行操作,如添加、删除和修改。同时,列表是可变的,即可以修改和扩充。此外,列表还可以当作堆栈或队列使用。
元组(tuple):与列表类似,但是元组是不可变的,即不能修改和扩充。不过,元组可以当作列表使用。
字符串(string):也是一种不可变的数据类型,不能修改和扩充。字符串是由字符组成的序列,可以当作列表使用。
集合(set):是另一种可变的数据类型,可以插入和删除。集合是由唯一元素组成的无序集合,可以进行集合运算和判断。例如,可以使用交集、并集、差集等运算。 以上这些数据结构都有各自的方法和用法,需要根据实际编程需求来选择和使用。
字典(dict):是一种可变的数据类型,可以插入和删除。字典是由键值对组成的无序集合,每个键对应一个值,通过键来访问值。字典的实现是Python的标准库中的dict,可以通过花括号、字典表达式和字典解析式来创建和操作。
在Python编程语言中,函数是一种组织好的、可重复使用的代码段,用于实现单一或相关联的功能。你可以自定义一个符合自己需求的函数,其基本规则如下:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号 :起始,并且缩进。
此外,Python还支持函数递归,这意味着定义的函数能够调用自身。递归是一种常见的数学和编程概念,它通过循环访问数据以达成结果。同时,Python中定义好的函数是可以通过函数名称调取并重复使用的模块。
在Python编程语言中,函数的参数是一种定义在函数名后的括号内,可以传递到函数中的值。你可以使用不同类型的参数来定制你的函数行为。
Python支持五种类型的参数:必选参数、默认参数、可变参数、关键字参数和命名关键字参数。
必选参数:这是函数定义时必须要有的参数,调用函数时必须传入对应的实际参数。
默认参数:这种参数在函数定义时不必传入,但在函数调用时如果没有提供对应的实际参数,那么就会使用默认值。注意,如果有多个默认参数,它们必须 在非默认参数之后。
可变参数:这种参数可以接受任意数量的实际参数。在定义时,可变参数前面有一个星号(*)。
关键字参数:这种参数允许你通过参数名指定实际参数的值,而不是通过位置。在函数调用时,关键字参数的顺序必须是匹配的。
命名关键字参数:这种参数结合了关键字参数和可变参数的特性。它可以接收任意数量的实际参数,并且可以通过参数名指定实际参数的值。在函数调用时,命名关键字参数的顺序是无所谓的。
这些参数类型可以组合使用,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
Python中的Lambda表达式是一种简洁的创建匿名函数的方法。它允许你在一行代码中定义一个简单的函数,而不需要使用def关键字。Lambda表达式的基本语法如下:lambda 参数列表: 表达式
Lambda表达式有以下几个优点:
简洁:Lambda表达式可以用一行代码实现一个简单的函数,不需要使用def关键字和函数名。
匿名:Lambda表达式没有函数名,因此不需要显式地将函数赋值给一个变量。这使得在需要一个小的、临时使用的函数时,可以更加方便地编写和传递。
适用于高阶函数:Lambda表达式可以作为参数传递给其他函数,例如map()、filter()等高阶函数。这使得你可以使用简单的语法来处理复杂的操作。
适用于并行计算:Lambda表达式可以很容易地用于并行计算,因为它们可以在多个线程或进程之间共享和执行。
适用于数据预处理:在机器学习和数据分析中,经常需要对数据进行一些预处理操作,例如标准化、归一化等。Lambda表达式可以很方便地实现这些操作,而无需定义完整的函数。
列表表达式是一种简洁的创建列表的方法,它使用方括号[]将一系列元素括起来,并用逗号,分隔。
列表推导式具有以下几个显著的优点:
代码简洁:列表推导式能够在一行代码中完成生成列表的任务,相比于使用for循环来生成列表,代码量更少,更加简洁。这使得代码更易读、易理解,同时也减少了代码的维护工作。
高效性能:列表推导式相比于for循环在性能上更为高效。由于列表推导式是内置函数,在底层进行了优化,可以以更快的速度完成列表的生成。
功能更强大:列表推导式对于对列表进行变换和筛选非常方便和灵活。我们可以在表达式中加入判断语句,通过条件进行筛选,从而生成满足特定条件的列表。
可读性更好:由于列表推导式的语法结构独特且简洁,代码更易读、易理解。在使用列表推导式时,无需在代码中额外说明循环的细节,使得代码更加清晰,提高了代码的可读性。
map()和filter()是Python内置的高阶函数,它们都接受一个函数和一个可迭代对象(如列表、元组等)作为参数。
map()函数:map()函数用于映射,它将一个序列的每个元素依次传递给指定的函数进行操作,并返回一个包含所有结果的迭代器。它不会改变原数组,也不会检查空数组。
filter()函数:filter()函数用于过滤序列,它接收一个函数和一个序列作为参数,然后将该函数应用于序列的每个元素,最终返回一个由所有使得函数返回值为真的元素组成的迭代器。它会根据函数中的筛选条件将返回符合条件的结果组成一个新的数组并返回。
在Python编程中,Iterable和Iterator是两个非常重要的概念。可迭代对象(Iterable)是指可以使用for循环遍历的对象,例如列表、元组、字典等,它们遵循可迭代的协议,即包含iter()方法。而迭代器(Iterator)则是实现了迭代器协议的对象,具体来说,只要一个对象定义了next()(Python 2版本)或者next()(Python 3版本)方法,那么它就是一个迭代器。迭代器中的iter()方法应返回其自身,因此迭代器也是一种可迭代对象。
更具体地说,当我们使用for循环来遍历一个可迭代对象时,Python会自动将该可迭代对象转换为一个迭代器。在这个过程中,for循环首先调用该可迭代对象的iter()方法来获取该对象的迭代器,然后通过调用迭代器的next()或next()方法来获取序列中的下一个元素。当没有更多的元素可以访问时,next()或next()方法会抛出StopIteration异常,从而结束遍历。
Python中的类是一种面向对象编程的概念,它允许我们根据属性和方法来模拟现实世界中的事物。类的定义包括实例属性、类属性、方法和类的继承等基础知识。此外,Python还支持类的构造方法、参数、继承、方法重写等方面的知识,以及类的特殊属性和方法,如私有属性和私有方法。
NumPy是一个Python编程语言的库,它支持大型多维数组和矩阵,并提供了大量的高级数学函数来操作这些数组。它通常被用作Python科学计算的基础包。
安装方法:
打开anaconda prompt在窗口中输入安装指令:
pip install numpy 或者 conda install numpy
Matplotlib 是一个用于创建图表的库,它提供了多种图表类型和可视化选项。以下是一些常见的 Matplotlib 功能:
线图(Line graph):通过输入一维数据(如一组变量的数值),Matplotlib 可以生成线图,以显示数据随时间或其他连续变量的变化趋势。
散点图(Scatter plot):通过输入二维数据(如两组变量的观测值),Matplotlib 可以生成散点图,展示两个或更多组之间的关系。
柱状图(Bar chart):通过输入一维数据(如一组变量的数值),Matplotlib 可以生成柱状图,以直观地比较不同类别的数据。
直方图(Histogram):通过输入二维数据(如两组变量的观测值),Matplotlib 可以生成直方图,展示数据的分布情况。
箱线图(Box Plot):通过输入一维数据(如一组变量的数值),Matplotlib 可以生成箱线图,以直观地比较不同类别的数据。
热力图(Heat map):通过输入一维数据(如一组变量的数值),Matplotlib 可以生成热力图,显示数据之间的相关性。
小提琴图(Gir figure):一种用于表示数据的图形,通常用于表示分类数据。
饼图(pie chart):一种用于表示数据的图形,通常用于表示数据所占比例。
这些只是 Matplotlib 提供的部分图表类型。要查看所有可能的图表类型和选项,请查阅官方文档:Matplotlib — Visualization with Python
安装方法:
启动anaconda prompt在窗口中输入指令下载安装matplotlib 库:
conda install -c conda-forge matplotlib
或者
pip install matplotlib
Seaborn是一个基于Python的非常受欢迎的数据可视化库,它以Matplotlib为基础进行了更高级的封装,从而使得作图过程更加方便快捷。通过Seaborn简洁的API,用户可以创建具有分析价值且美观的图形,即使是没有任何基础的人也能轻松上手。
Seaborn的一些主要特点包括:
提供了多种常见的图表类型,如散点图、线图、柱状图、箱线图等,可以快速创建各种美观而又有用的图表。
内置了多种不同的样式和颜色主题,可以轻松地修改图表的外观,使其更加符合个人或团队的品牌形象。
集成了多种统计分析工具,例如回归分析、核密度估计、分类汇总等,可以帮助用户更深入地理解数据,并从中发现有用的信息。
能够处理多变量数据,可以使用散点图、热力图等方式展示变量之间的关系和趋势。
此外,Seaborn还对Pandas和Numpy数据类型有着良好的支持,并且其图表接口和参数设置与Matplotlib非常接近。因此,在进行探索性数据分析(EDA)过程中,Seaborn往往能提供更高的效率。
安装方法:
启动anaconda prompt在窗口中下载安装包:
pip install seaborn 或者 conda install seaborn
图形种类:
Seaborn是一个基于Matplotlib的Python数据可视化库,它提供了更高级的接口用于绘制有吸引力和信息量的统计图形。Seaborn一共有5个大类21种图,包括:
Relational plots 关系类图表:relplot是关系类图表的接口,其实是下面两种图的集成,通过指定kind参数可以画出下面的两种图。这两种图分别是scatterplot散点图和lineplot折线图。
Categorical plots 分类图表:catplot是分类图表的接口,其实是下面八种图表的集成,通过指定kind参数可以画出下面的八种图。这八种图分别是:stripplot分类散点图、swarmplot能够显示分布密度的分类散点图、boxplot箱图、violinplot小提琴图、boxenplot增强箱图、pointplot点图、barplot条形图和countplot计数图。
Distribution plot 分布图:这类图像包括直方图、核密度估计图等,用于展示数据的分布情况。
在大多数情况下,使用Seaborn能做出很具有吸引力的图,而且Seaborn的图像风格更清爽,配色更加舒服,图形元素的样式更加细腻。
关系类图表:
散点图(scatterplot):用于展示两个变量之间的关系,例如不同城市的人口密度和平均收入。
折线图(lineplot):用于展示两个变量随时间的变化关系,例如某地区的GDP增长率。
分类图表:
分类散点图(stripplot):用于展示分类变量与数值变量之间的关系,例如不同性别的身高分布。
分类箱图(boxplot):用于展示分类变量的中位数、四分位数和异常值,例如不同年龄段的人的血压水平。
小提琴图(violinplot):用于展示分类变量的分布情况,同时显示每个类别的中位数、四分位数和异常值,例如不同国家的人口密度分布。
分布图:
直方图(histogram):用于展示数据的分布情况,例如某个城市的房价分布。
核密度估计图(kde plot):用于展示数据的分布情况,同时显示数据的平滑曲线,例如某个城市的房价密度分布。
线上加载
本地加载
下载数据集
seaborn-data: seaborn-data 数据集
通过修改参数路径加载数据集