zoukankan      html  css  js  c++  java
  • 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: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等系数

                        

            

            

            

            

            

            

            

            

            

            

                      

                      

                      

            

            

            

            

            

            

            

            

            

  • 相关阅读:
    Java 设计模式——状态模式
    Java 设计模式——外观模式
    Java高级之虚拟机加载机制
    17.1.1.6 Creating a Data Snapshot Using Raw Data Files 创建一个数据快照使用 Raw Data Files
    17.1.1.5 Creating a Data Snapshot Using mysqldump
    17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 得到复制master binary log 位置:
    17.1.1.3 Creating a User for Replication 创建一个用于用于复制:
    17.1.1.2 Setting the Replication Slave Configuration
    17.1.1.1 Setting the Replication Master Configuration 设置复制的master 配置:
    17.1.1 How to Set Up Replication 设置复制:
  • 原文地址:https://www.cnblogs.com/zach0812/p/11259271.html
Copyright © 2011-2022 走看看