微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Numpy_Matplotlib_Pandas数据分析与展示入门

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:\Users\Administrator\Desktop\desktop小整理/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等系数

                    

        

        

        

        

        

        

        

        

        

        

                  

                  

                  

        

        

 

        

        

        

        

 

 

 

 

        

 

        

        

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐