NumPy入门:
ndarray 在程序中的名字是array
np.array() 可以创建一个array数组
np.int 类型实际是没有的,会自动解析具体的类型
所以,可以简写到np.int ,不必详细到int 8 ,16,32,64
numpy 的设计理念:
希望大家将ndarray 当做一个数来看待
数据的存取和函数:
一维和二维数据的存取:
使用的是csv 格式
用的函数是:
savetxt()
loadtxt()
多维数据的存取:
一:使用np.tofile() 和np.fromfile()
它的缺点是我们要在另外一个文件中记录数组的类型和维度信息
二:NumPy 的便捷文件存取
它保存的文件是.npy 为扩展名的文件,压缩是.npz
使用np.save() 和 np.load()
它内部记录的维度和数组信息
NumPy的随机数函数
这里通过一个子库random
NumPy的统计函数
np.min
np.max等
由np直接调用
NumPy的梯度函数
np.gradient(f) 计算数组f中元素的梯度,f是多维时,返回每个维度的梯度
梯度:连续值之间的变化率,即斜率
梯度的作用:它反映了元素的变化率,尤其是用在图像声音等批量处理的时候
梯度有助于我们发现图像,声音的边缘
实例:图像的手绘风效果
图像的数组表示:
RGB
PIL: Python Image Library :处理图像的第三方库
安装方法:pip install pillow
在使用的时候,我们要用大写的PIL ,
from PIL import Image
Image 是个基础类,一个Image 就代表一个图像
如何表示图像呢?
可以使用numpy 的数组来表示图像,
C:UsersAdministratorDesktopdesktop小整理/zcb.png
图像的变换:
我们知道图像是可以表示为数组的,
数组又是可以运算的,那么经过运算后就可以改变图像
Matplotlib 库入门:
它是python非常优秀的数据可视化第三方库
Matplotlib 库由各种可视化类构成,内部结构复杂,它受MATLAB启发
为了不关心里面复杂的结构,Matplotlib 提供了个子库
matplotlib.pyplot
它是绘制各类可视化图形的命令子库,相当于快捷方式
库的使用:
import matplotlib.pyplot as plt
经常用的就是pyplot 这个子库,就是plt
pyplot 中文显示的方法:
1,使用rcParams修改字体实现
matplotlib.rcParams['font.family']='SimHei'
常见字体:
中文黑体:SimHei
中文楷体:Kaiti
中文隶书:LiSu
中文仿宋:FangSong
中文幼圆:YouYuan
华文仿宋:STSong
注:这种方法是将所改变的地方全部改为这种字体
它改变的是全局字体
2,在中文输出的地方,增加一个属性:fontproperties
它这种方法不对其他地方起作用,不是全局
建议使用这种
pyplot的子绘图区域
之前我们知道可以使用subplot,但是如果是复杂的区域呢,
下面就要看一个辅助subplot的方法,subplot2grid()
除了subplot2grid() 我们还可以使用GridSpec类,
记得要导入:
import matplotlib.gridspec as gridspec
gs= gridspec.GridSpec(3,3)
关键:选取恰当的图形展示数据含义
pyplot 基础图表函数:
饼图:plt.pie()
直方图:plt.hist()
极坐标图:polar (使用面向对象的方法绘制)
散点图:(使用面向对象的方法绘制)
Pandas 库入门:
Pandas是python 第三方库,它提供了高性能,易用数据类型和分析工具的库
简单说,pandas有两个好处:
第一:它提供了便于操作的数据类型
第二:它提供了很多的分析函数和分析工具
引用:
import pandas as pd
Pandas 是基于NumPy实现,常用NumPy 和Matplotlib 一同使用
Pandas主要提供两个数据类型:Series 和 DataFrame
Series 相当于一个一维数据类型,
DataFrame 相当于二维或多维数据类型
围绕这两个数据类型,它提供了各类的操作:
基本操作,运算操作,特征类操作,关联类操作
对比: NumPy Pandas
基础数据类型(ndarray) 扩展数据类型(Series,DataFrame)
关注数据的结构表达(数据的维度) 关注的是数据的应用表达
即看到的是n维的数据存到一个变量中 即使用数据的时候,如何更有效的提取数据以及对它进行运算
“结构表达”体现在: 维度:数据间关系 “应用表达”体现在:数据与索引间关系
总结:我们知道将数据的维度建立好,这可以将数据的结构表达清楚,
但是在使用数据的时候,过于紧密的维度关系,并不利于数据的使用,
因此Pandas并没有过分的关注数据的结构表达,而是关注的是数据的应用表达
一句话,Pandas是建立好数据和索引之间的关系。
Pandas库的Series类型
Series类型由一组数据及与之相关的数据索引组成。
索引在第二个参数
Series创建:Series可以由如下来创建:
1,Python列表
2,标量值
pd.Series(25,index=['a','b','c'])
此时一定要指定index
3,Python字典
pd.Series({'a':9,'b':8,'c':7})
另外:
pd.Series({'a':9,'b':8,'c':7},index=['c','a','b','d'])
此时的d 索引值为NaN
4,ndarray
//常用
pd.Series(np.arange(5))
pd.Series(np.arange(5),index = np.arange(9,4,-1))
5, 其他函数
Series类型的基本操作:
Series类型包括 index 和values两部分
Series类型的操作类似ndarray类型
Series类型的操作类似Python字典类型
它的自动索引和自定义索引时并存的,都可以使用
但是不可以混合使用
Series 的对齐操作
在运算中会自动对齐不同索引的数据
NumPy值关注维度,而Series很重视索引
a = pd.Series({'a':9,'b':8,'c':7})
b = pd.Series({'b':1,'c':2,'d':3,'e':4})
a +b =
a NaN
b 9.0
c 9.0
d NaN
e NaN
dtype: float64
Series类型的name 属性
Series对象和索引都可以有一个名字,存储在属性.name中
Series类型的修改:
Series对象可以随时修改并即刻生效
如何理解Series 类型呢?
实际上,它就是个一维的带“标签”的数组。
Series 的基本操作类似于ndarray 和字典,但是它不是基于维度而是基于索引,
如果不同索引之间存在运算存在对齐问题,
Pandas库的DataFrame类型
Series是Pandas的一维数据类型,DataFrame是Pandas的二维数据类型
DataFrame定义:
DataFrame类型由共用相同索引的一组列组成,
DataFrame是个表格型的数据类型,每列值类型可以不同
DataFrame既有行索引(index,axis=0)也有列索引(column,axis=1)
DataFrame 常用于表达二维数据,但可以表达多维数据
DataFrame的创建:
1,二维ndarray对象
a = pd.DataFrame(np.arange(10).reshape(2,5))
2,由一维ndarray,列表,字典,元组或Series构成的字典
由一维ndarray对象字典创建
dt={'one':pd.Series([1,2,3]),
'two':pd.Series([4,5,6])}
pd.DataFrame(dt)
由列表类型的字典创建
dt = {'one':[1,2,3,4],'two':[5,6,7,8]}
d = pd.DataFrame(dt,index=['a','b','c','d'])
注:因为是字典,所以它们列的顺序可能和定义的不一样
索引列:
d['one']
索引行:
d.ix['a']
索引具体
d['one'][a]
3,Series类型
4,其他的DataFrame类型
如何理解DataFrame :
它是个二维的带“标签”的数组
Pandas库的数据类型操作:
主要是操作Series 和DataFrame
增加和重排:
重新索引
删除:
drop
重新排行索引:
d.reindex(index=['c','a','b','d','e'])
重新排列索引:
d.reindex(columns=['two','one'])
新增列
d.columns.insert(3,'three')
Pandas的索引类型:
d.index
d.columns
它们的类型都是Index()
操作索引对象 ,它们返回索引对象
d.columns.delete(1)
d.index.insert(2,'c')
直接将DataFrame对象删除指定的行和列
.drop() 可以删除Series 和DataFrame指定行或列索引
a= pd.Series([9,8,7,6],index = ['a','b','c','d'])
a.drop(['b','c'])
dt = {'one':[1,2,3,4],'two':[5,6,7,8]}
b= pd.DataFrame(dt,index=['a','b','c','d'])
b.drop(['a','c']) //默认删的是axis = 0
//b.drop(['one'],axis= 1)
Pandas 库的数据类型运算
二维和一维比较时,默认作用在1轴上
Pandas库的数据排序:
.sort_index()方法,它是在指定轴上根据索引排序
默认升序
.sort_values()方法,它是在指定轴上根据数值排序
默认升序
Series.sort_values(axis=0,ascending=True)
DataFrame.sort_values(by,axis=0,ascending=True)
by 是axis 轴上的某个索引或索引列表
注:NaN统一放到排序末尾
数据的基本统计分析:
强大的是:.describe()
数据的累积统计分析:
.cumsum() 依次给出前1,2...个数的和
.cumprod() 乘积
.cummax()
.cummin()
滚动计算:(窗口计算)
.rolling(w).sum() 依次计算相邻w个元素的和
.rolling(w).mean()
.rolling(w).var()
.rolling(w).std()
.rolling(w).min().max()
数据的相关分析:
可以通过协方差:
协方差 >0, X和Y正相关
协方差 <0, X和Y负相关
协方差 =0, X和Y独立无关
还有其他的相关性判断方法:
Pearson相关系数:
r = ...
r的取值【-1,1】
它的绝对值
[0.8,1.0] --> 极强相关
[0.6,0.8] --> 强相关
[0.4,0.6] --> 中等程度相关
[0.2,0.4] --> 弱相关
[0.0,0.2] --> 极弱相关或无相关
.cov() 计算协方差矩阵
.corr() 计算相关系数矩阵,Pearson,Spearman,Kendall等系数