什么是数据科学?
目前每天生成的数据量呈指数级增长!在过去10年中,数据的来源以及收集和存储数据的能力已经取得了很大的进步。
公司正在适应各种工具合计数来挖掘数据中的模式并收集有用的信息。
简而言之,这就是数据科学的全部意义所在。
简单来说,数据科学涉及使用各种技术来理解数据并构建预测模型以做出业务决策。
数据科学中的一些流行应用包括欺诈检测,体育分析,航空航线规划等。
因此,数据科学是关于从数据中获取洞察力和发现信息的模式。
统计学的基础:
假设一组产品的价格如下:
[18,24,67,55,42,14,19,26,33]
算术平均数(arithmetic mean ) 又称均值,是统计学中最基本,最常用的一种平均指标。
平均数=289/9=33.1
中位数 (Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本,种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。
对于有限的数集,可以通过把所有的观察值高低排序后找出正中间的一个作为中位数。
如果观察值有偶数个,通常去最中间的数值的平均数作为中位数。
[14,18,19,24,26,33,42,55,67]
中位数是26,因为这是中位数
中位数与平均数。
1 平均数是通过计算得到的,因此他会因每一个数据的变化而变化。
2 中位数是通过排序得到的,他不受最大最小两个极端数值的影响。部分数据的变动对中位数没有影响,当一组数据中的各给别数据变动较大时,常用他来描述这组数据的集中趋势。
所以,
平均数:需要全组所有的数据来计算,易受数据中极端数值的影响。
中位数:仅需要把数据按顺序排列后即可确定,不易受数据中极端数据的影响。
方差:
统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方之的平均值。
在许多实际问题中,研究方差即偏离程度有着重要的意义。
方差是衡量源数据和期望值相差的度量值。
有如下数据集:
[14,18,19,24,26,33,42,55,67]
平均数为 33.1
为了计算方差,我们取每个值与均值之间差值的平方,然后对结果求平均值:
标准差
标准差(Standard Deviation) ,标准差是方差的算术平方根。
标准差能反映一个数据集的离散程度。平均数相同的两组数据标准差未必相同。
[14,18,19,24,26,33,42,55,67]
我们知道,以上数据集的方差是292.5
现在我们取方差的平方根,得到标准偏差:
标准差=292.5**0.5=17.1
现在,我们可以检查那些年龄在平均值(33.1)-从(33.1-17.1)到(33.1+17.1)
的一个标准差(17.1)内:
[14,18,19,24,26,33,42,55,67]
如你所见,9个值中有6个在该范围内。
低标准偏差表示这些值往往更接近集合的平均值,而高标准差表示这些值分布在更宽的范围内。
Numpy
Numpy(Numerical Python )是一个用于处理数值数据的Python 库。
Numpy 支持大量的维度数组与矩阵运算,此外也针对数组提供大量的数学函数库。
Numpy 是一个运行速度非常快的数学库,主要用于数组计算,包含:
一个强大的N维数组对象 ndarray
广播功能函数
整合C/C++/Fortran代码的工具
线性代数,傅里叶变换,随机数生成等功能
NumPy 提供了一种用于对数据执行操作的数组结构 Numpy 数组。
NumPy数组 和 原生Python Array(数组)之间有几个重要的区别:
NumPy 数组在创建时具有固定的大小,与Python的原生数组对象(可以动态增长)不同。更改ndarray的大小将创建一个新数组并删除原来的数组。(不可变的数据类型)
NumPy 数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。 例外情况:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组。
NumPy 数组有助于对大量数据进行高级数学和其他类型的操作。通常,这些操作的执行效率更高,比使用Python原生数组的代码更少。
越来越多的基于Python的科学和数学软件包使用NumPy数组; 虽然这些工具通常都支持Python的原生数组作为参数,但它们在处理之前会还是会将输入的数组转换为NumPy的数组,而且也通常输出为NumPy数组。换句话说,为了高效地使用当今科学/数学基于Python的工具(大部分的科学计算工具),你只知道如何使用Python的原生数组类型是不够的 - 还需要知道如何使用 NumPy 数组。
创建Numpy数组
可以使用 np.array() 函数创建 NumPy 数组,并为其提供一个列表作为参数:
x = np.array([1, 2, 3, 4])
现在,x 是一个包含 4 个值的 NumPy 数组。
我们可以使用从 0 开始的索引访问它的元素:
import numpy as np
x = np.array([1, 2, 3, 4])
print(x[0])
运行结果:
1
强调: NumPy 数组只能包含一种数据类型,而列表可以包含多种不同类型的数据。
Numpy数组的使用
numpy数据通常被称为ndarrays ,他代表‘N维数组’,因为他们可以有多个维度
x[1][2] 获取第一行第3个元素
这将创建一个二维数组,他有3列和3行,并输出第2行和第3列的值
可以使用点(.)访问数组的属性
ndim返回数组的维数
size 返回数组元素的总数
shape返回一个整数元组,沿数组的每个维度存储的元素数。
例如:
因此,我们示例中的数组有2个维度,9个元素,并且是一个(3x3)矩阵(3行3列)
我们还可以使用np.append() ,np.delete() ,和np.sort() 对数组中的元素进行添加,删除 排序
例如:
np.arange()允许您创建一个包含一系列均匀间隔的数组(类似于python 范围)
Reshape:可以改变数组的形状(行数与列数)
例如:
这是一个一维数组,包含6个元素
Numpy允许我们使用reshape() 函数改变数组的形状
例如,我们可以将一维数组更改为2行3列的数组。
注意:使用reshape方法时,要生成的数组需要与原始数组具有相同数量的元素。
reshape()函数也可以做相反的事情,将一个二维数组降维一个一维数组
结果是一个包含6个元素的一维数组。
numpy的索引和切片
Numpy 数组可以像python列表一样可以被索引和切片。
例如:
注意:负索引从数组的末尾开始计数,因此,[-3:]将选取最后3个元素 [-1]将选取最后一个元素
可以根据条件做筛选 :
可以使用&(和) 和 | (或)
例如:
数组中一些基本的数学运算
查找所有数组的总和:
获取最大值,最小值元素
我们还可以在数组与单个数字之间进行操作
该操作将数组中所有的元素都*2
提示:我们将对Numpy每一个元素都执行相同操作称为广播。
统计数据
还记得我们在上面讲过的汇总统计吗,包含平均数,中位数,方差,标准差(除了中位数都有两种形式来统计)
Numpy 数据具有返回这些值的内置函数。
numpy提供了许多有用的函数来执行数组的常见操作。
numpy 的综合练习:
什么是pandas?
pandas是python中最有欢迎的数据科学库之一。
易于使用,它建立在numpy之上,并共享许多功能和属性。
使用pandas ,你可以从文件中读取和提取数据,转换,和分析数据,计算统计数据和相关性等等。
开始使用pandas 前 ,我们需要导入他
import pandas as pd
pandas 名字衍生自术语‘panel data ’ 面板数据 和‘python data analysis’
pandas 是一个强大的分析结构话数据的工具集,基础是numpy (提供高性能的矩阵运算)
pandas 可以从各种文件格式比如 csv json sql excel 导入数据
pandas 可以对各种数据进行运算操作,比如归并,再形成,选择,还要数据清洗和数据加工特征。
pandas 广泛应用在学术,金融 ,统计学,等各个领域,分析领域。
pandas 最重要的两个组件,Series 和 Dataframe 。
Series本质上是一列,Dataframe是一个Series集合组成的多维表。
比如下面的Dateframe是由两个Series,age和height组成的
你可以将Series 视为一维数组,而Dataframe是多维数组。
创建Dateframe
在处理真实的数据之前,让我们先动手创建一个DateFrame来探索它的功能
创建datafame 最简单地方法就是使用字典
每个键都是一列,而值表示该列数据的数组。
现在我们将这个字典传递给DateFrame 构造函数:
DateFrame 索引
dateframe 自动的为每一行创建一个数字索引。
我们可以在创建DateFrame 时指定自定义索引
现在我们可以使用他的索引和loc函数访问一行
这将输出对应于索引‘bob’的行。
请注意,loc函数使用方括号来指定索引
索引:
我们可以通过在方括号中指定其名称来选择单个列
结果是一个Series 对象
如果我们想选择多个列,我们可以指定一个列名列表。
这一次的结果是一个DateFrame,因为他包含多个列。
当我们只需要从数据集中选择一部分列时,会很有用。
切片
pandas 中使用iloc 函数根据其数字索引选择数据
iloc 的工作方式与Python 中的索引列表相同
例如:
条件选择数据
我们还可以根据条件来选择数据
例如:
提示: & 代表且 | 代表或 多个条件是必须加括号
读取数据:
数据以文件格式出现是非常常见的,最流行的格式之一是CSV(逗号分隔值)
Pandas 支持将CSV文件中的数据直接读取到DateFrame中
df=pandas.read_csv("ca-covid.csv")
我们需要给read_csv()函数,提供文件的路径
提示:
pandas 还支持从jaon文件中以及sql数据库中读取。
一旦我们在DateFrame中有数据,我们就可以读取他的数据,
我们可以使用head() 获取数据的前多少行
info() 函数用来获取有关数据集的基本信息,例如行数,列数,数据类型等
从结果我们可以看出我们的数据集包含7行,和4列:省 城市 地区 排名 我们还看到pandas 还自动添加了已给自动生成的索引, 我们可以使用 set_index()函数,设置我们自己的索引
inplace=True 参数指定我们的更改将作用于原来的DateFrame,而无需分配给新的DateFrame变量。
删除列
drop 删除行或列
axis=1 指定我们要删除一列
axis=0 指定我们要删除一行
使用matplotlib 进行可视化:
matplotlib 是一个用于创建图形,图表和图形的库,它还提供了通过更改颜色,标签等来自定义图形的功能。 要使用matplotlib ,我们首先需要导入他
import matplotlib.pyplot as plt
pyplt 是我们将用于创建绘图的模块。
提示:plt 是用于导入此模块的通用名称
matplotlib 与pandas 配合的非常好
为了显示matplotlib的强大功能,让我们从虚拟数据创建一个图表。
系列中的数据使用Y轴,而索引绘制X轴上,我们将创建一个包含一些数字的Pandas Series 并使用他创建我们的图表。
.plot() 函数用于根据pandas series 或dateframe 中的数据创建绘图
系列(series)中的数据使用Y轴,而索引绘制在X轴上
由于我们没有为我们的数据提供自定义的索引,因此使用的是默认的数字索引。
提示:plt.savefig('plot.png') 用于保存图表。
折线图:
柱状图:
面积图:
散点图:
饼形图:
绘图格式: