1. 程式人生 > >4 anaconda&Numpy&Pandas&Matplotlib

4 anaconda&Numpy&Pandas&Matplotlib

  1. python環境搭建
    1. Jupyter notebook修改初始開啟的資料夾路徑;在jupyter開啟的情況下
      1. cmd->jupyter notebook --generate-config->y
      2. c.NotebookApp.notebook_dir修改jupyter_notebook_config.py的資料夾路徑
    2. 啟動jupyter notebook出現閃退
      1. 修改配置檔案,anaconda prompt輸入jupyter notebook再啟動jupyter notebook
      2. 修改快捷方式,屬性->目標->去除%USERPROFILE%
    3. Anaconda Navigator打不開
      1. 使用管理員執行:conda prompt
      2. 執行命令:conda update anaconda-navigator
      3. 執行anaconda-navigator --reset
      4. 執行conda update anaconda-client
      5. 執行conda update -f anaconda-client
  2. conda
    1. conda: 一個工具,用於包管理和環境管理,其中:包管理與pip類似,管理Python第三方庫;將工具、第三方庫、Python版本、conda都當作包,同等對待
    2. anaconda:一個集合,包括conda、某版本Python、一批第三方庫等
  3. Spyder:python和Ipython的結合,很好的除錯程式
    1. Ipython
      1. 變數?:顯示通用資訊和原始碼
      2. %magic:顯示所有魔術命令
      3. %run:執行.py程式
      4. 行首In[n]:n為執行次數
  4. jupyter notebook快捷鍵
    1. 命令模式:按鍵Esc開啟
      1. Ctrl+Enter執行本單元
      2. Shift+Enter執行本單元,選中下一個單元
      3. Alt+Enter執行本單元,在其下方插入新的單元
      4. Shift+k選中上方單元
      5. Shift+j選中下方單元
      6. Shift+m合併選中的單元
      7. 雙擊D刪除選中的單元
    2. 編輯模式:Enter鍵啟動/雙擊一個單元
      1. Tab程式碼縮排/程式碼補全
      2. Shift+tab取消縮排/提示
  1. Numpy
    1. NumPy是一個開源的Python科學計算基礎庫,包含:
      1. 一個強大的N維陣列物件 ndarray,組成部分:
        1. 實際的資料
        2. 描述這些資料的元資料(資料維度、資料型別等)
      2. 廣播功能函式
      3. 整合C/C++/Fortran程式碼的工具
      4. 線性代數、傅立葉變換、隨機數生成等功能
      5. NumPy是SciPy、Pandas等資料處理或科學計算庫的基礎
      6. 陣列物件的必要性:
        1. 陣列物件可以去掉元素間運算所需的迴圈,使一維向量更像單個數據;類似R中的矩陣計算
        2. 設定專門的陣列物件,經過優化,可以提升這類應用的運算速度
        3. 陣列物件採用相同的資料型別,有助於節省運算和儲存空間
    2. 陣列:資料型別必須相同;二維陣列是一維陣列的組合形式,以此類推,交叉表即二維陣列,表頭是二維陣列的一部分;多維陣列是二維陣列在新維度上的擴充套件;高維陣列用字典來表示
      1. 建立numpy陣列
        1. numpy.array([[],[]],dtype=);列表中巢狀列表;一個二維陣列物件必須整體放在一個[]內
        2. numpy.array(())元祖型別建立
        3. numpy.array([[],()])列表和元祖混合型別建立
        4. numpy.arange(start,end,step)類似range,生成一維陣列
        5. numpy.ones((row,col))生成元素為1的二維陣列;row,col前面可加dim維度數
        6. numpy.zeros((row,col),dtype=numpy.int32)生成元素為0的二維陣列
        7. numpy.eye(n)生成n*n的單位矩陣
        8. numpy.ones/zeros/full_like(a,[val])根據陣列a的形狀生成一個全是1/0/val的陣列
        9. numpy.linspace(start,end,n,endpoint=T)生成包含start和end的n個等距資料的一維陣列,endpoint=F則不包含end
        10. numpy.concatenate((a,b))將a,b連線為一個數組
      2. 屬性
        1. a.ndim秩,維度數量
        2. a.shape行列數的元祖
        3. a.size元素的個數,行*列
        4. a.dtype元素的型別
        5. a.itemsize每個元素的大小,以位元組為單位
      3. 元素型別
        1. bool:T/F
        2. int32:32位長度的整數
        3. uint32:32位長度的無符號整數,從0開始
        4. float32:1位符號位,8位指數
        5. complex64:實部和虛部都是32位浮點數
      4. *非同質的ndarray物件,即陣列中的行元素數量不等,會將每行看做物件型別
      5. 陣列變換方法
        1. a.reshape(shape)不改變陣列元素,返回shape形狀的陣列,原陣列不變,元素的數量不變
        2. a.resize(shape)類似reshape,但修改原陣列且不返回新的陣列,元素的數量不變
        3. a.swapaxes(1,0)將n維陣列中的兩個維度進行調換,注意只有兩個引數,二維陣列的維度沒有指明則為0和1
        4. a.flatten()將陣列轉換為一維陣列,降維,原陣列不變
        5. a.astype(numpy.float)陣列元素的資料型別轉化,一定建立一個新的陣列,即使兩個型別一樣,即原陣列不變;深拷貝
        6. a.tolist()轉化為列表,原陣列不變
      6. 操作
        1. 索引a[],從0開始
        2. 切片a[start:end:step]不含end
        3. 多維陣列索引a[x,y,z]索引都從0開始
        4. 多維陣列的切片a[:,1:3,::2]每個維度的切片和一維陣列切片相同
      7. 運算
        1. 標量運算
          1. a.mean()均值
        2. NumPy一元函式:對ndarray中的資料執行元素級運算的函式,都有返回值
          1. numpy.abs/fabs(a)陣列各元素的絕對值/float型別轉化
          2. numpy.sqrt(a)陣列各元素的平方根
          3. numpy.square(a)陣列各元素的平方
          4. numpy.log/log10/log2(a)陣列各元素的自然對數/10為底對數/2為底對數
          5. numpy.ceil/floor(a)陣列各元素的ceiling/floor值,往大/往小取整
          6. numpy.rint(a)陣列各元素的四捨五入
          7. numpy.modf(a)陣列各元素的小數和整數部分以兩個獨立陣列組合為一個元祖的形式返回
          8. numpy.cos(a)陣列各元素的三角函式
          9. numpy.exp(a)以陣列各元素為冪的指數值
          10. numpy.sign(a)陣列各元素的符號值(1,0,-1)
          11. numpy.copysign(a,b)將b的符號賦給a中對應的元素
        3. NumPy二元函式:兩個陣列物件的計算
          1. +-*/**兩個陣列各元素進行對應運算,類似R的矩陣運算
          2. numpy.maximum/minimum(a,b)a和b陣列相對應元素的大小比較,返回陣列形狀相同的物件
          3. numpy.mod(a,b)a和b陣列相對應元素的模運算
          4. numpy.copysign(a,b)將b中各元素的符號賦值給a的對應元素
          5. ><==!=a和b陣列相對應元素的算術比較
  2. Numpy資料存取與函式
    1. 資料的CSV檔案存取:CSV只能有效儲存一維和二維陣列
      1. numpy.savetxt('file', array, fmt='%.18e', delimiter=',')
        1. fmt寫入檔案的格式,%d,%.8f,%.18e
        2. delimiter分隔符,預設為空格
      2. numpy.loadtxt('file', dtype=numpy.float, delimiter=',' , unpack=False)
        1. dtype讀入資料型別
        2. unpack=T讀入的屬性將分別寫入不同變數
    2. 多維資料的存取
      1. a.tofile('file.dat',format='%d',sep=',')
      2. numpy.fromfile('file', dtype=numpy.float, count=‐1, sep='')
        1. count讀入元素個數,‐1表示讀入整個檔案
        2. 讀取的是一維陣列
      3. numpy.save('file.npy',array)
      4. numpy.load('file')儲存陣列結構
    3. 檢視當前路徑
      1. import os->os.getcwd()
    4. 隨機函式
      1. numpy.random.rand(shape)生成[0,1)範圍浮點數,均勻分佈
      2. numpy.random.randn(shape)生成浮點數,符合標準正態分佈
      3. numpy.random.seed(seed)設定隨機種子
      4. numpy.random.randint(min,max,(shape))根據min和max確定整數的範圍,shape確定陣列結構
      5. numpy.random.shuffle(array)將序列的所有元素隨機排序,即陣列的行順序變化,改變原陣列
      6. numpy.random.choice(a[,size,replce,p]) 從陣列a中以概率P來抽取元素,形成shape形狀的新陣列
      7. numpy.random.permutation(array)效果同shuffle,不改變原陣列
      8. numpy.random.uniform(min,max,(shape))根據min和max確定的範圍,shape確定陣列結構,生成均勻分佈陣列
      9. numpy.random.normal(mean,scale,(shape))根據mean和scale,shape確定陣列結構,生成正態分佈陣列
      10. numpy.random.poisson(lambda,(shape))根據lambda,shape確定陣列結構,生成泊松分佈陣列
    5. 統計函式;axis=0|1代表按列|行計算
      1. numpy.sum(array)
      2. numpy.mean(array,axis=None)根據axis指定的軸計算期望
      3. numpy.average(array,axis=None,weights=None)加權均值,按列計算則權值對應行,按行計算則權值對應列
      4. numpy.std(array)標準差
      5. numpy.var(array)方差
      6. numpy.argmin(array)降維後的最小值下標值
      7. numpy.argmax(array)降維後的最大值下標值
      8. numpy.unravel_index(index,a.shape)根據a中元素的序列找到該元素的陣列位置;重新塑造成多維下標
      9. numpy.ptp(array)計算最大值和最小值的差
      10. numpy.median(array)計算陣列的中值
      11. numpy.gradient(array)計算陣列a中元素的梯度
        1. 一維陣列即元素的(右側元素-左側元素)/2,只有一側時則右側元素-左側元素;
        2. 二維陣列即按行|列(下-上)的方向上進行計算,返回兩個陣列
  1. Pandas:提供高效能易用資料型別和分析工具;pandas包含索引的資料物件;http://pandas.pydata.org/
    1. Series:自定義索引值列表
      1. 建立:Series型別的資料可以由python列表,標量,python字典,ndarray,其他函式建立
        1. pandas.Series([10,9,8],index=['a','b','c'])列表建立一組資料
        2. pandas.Series(26,index=['a','b','c','d'])標量值建立一組資料
        3. pandas.Series(dict,index=['c1','d','a','b'])字典建立一組資料,預設鍵作為索引;有index則表示選擇返回的鍵值對的鍵
        4. pandas.Series(list,index=numpy.arange)通過numpy建立索引
      2. 屬性
        1. s.index
        2. s.values
        3. s.name一般是新增Series物件名
        4. s.index.name一般是新增index的列名
        5. s[index_value]|s[1]索引值/預設索引位置查詢資料
        6. s[[index_value_1,index_value_2,...]]多值查詢,需要巢狀;索引值和預設索引是並存的,但不能混用
        7. s[start:end:step]左閉右開
      3. 方法
        1. s.median()數值中位數
        2. numpy.exp(s)列表計算
        3. s.get(index,return)判斷Series中是否包含index,存在則返回值,不存在則return
        4. index in s判斷索引是否在Series中,不能用於值是否存在的判斷
        5. s1+s2返回所有的索引,但只返回相同索引的相加值;對齊操作:在運算中會對齊相同索引
      4. 修改:隨時修改,即刻生效
        1. s[index_value]|s[1]|s[[index_value_1,index_value_2,...]]=修改值
    2. DataFrame:二維index資料結構;每列的資料型別可以不同,有行索引和列索引,可以表達多維資料;當axis=0時,針對行索引處理每一列資料;當axis=1,針對列索引處理每一行資料
      1. 建立:DataFrame型別的資料可以由二維ndarray物件,一維ndarray物件,列表,字典,元祖,Series作為值而構成的字典,其他DataFrame型別的物件建立
        1. pandas.DataFrame(numpy.array)ndarray物件建立
        2. pandas.DataFrame({col_1_name:pandas.Series(),col_2_name:pandas.Series()})Series來建立
        3. pandas.DataFrame({col_1_name:list1,col_2_name:list2},index)列表建立
        4. pandas.DataFrame({col_1_name:tuple1,col_2_name:tuple2},index)元祖建立
        5. pandas.DataFrame({col_1_name:{dict1},col_2_name:{dict2}})字典建立
      2. pandas資料存取https://blog.csdn.net/u010801439/article/details/80033341;numpy的建立方法將定義每個元素的型別,pandas將每列看做一個object,DataFrame的元素型別可以不同
        1. pandas.DataFrame(data).to_csv('file',index=T|F,header=T|F),index行標籤,header列標籤
        2. pandas.read_csv('file',encoding='gbk')
      3. DataFrame屬性
        1. df.index:index物件
        2. df.columns
        3. df.values具體資料,二維列表
        4. df[col_name]列索引,看做物件,型別為元素的型別
        5. df.loc[row_index]行索引,看做物件
        6. df[col_name][start:end:step]切片,標準格式,列名不能改成預設數值索引,否則只作第一個[]的行切片
  2. Pandas操作
    1. df.reindex(index=[],columns=[])重新自定義行列索引排序
    2. df.reindex(columns=df.columns.insert(col_index,col_name),fill_value=)新增列;列的預設數值索引從0開始
    3. df.reindex(index=df.index.insert(row_index,row_name),method='ffill')新增行;method=ffill|bfill向前|向後填充
  3. Pandas索引index型別的常用方法:index物件是不可變物件
    1. index.append(new_index)結合兩個index生成新的index物件
    2. index.diff(new_index)計算差集,生成新的index物件
    3. index.intersection(new_index)計算交集,生成新的index物件
    4. index.union(new_index)計算並集,生成新的index物件
    5. index.delete(loc)刪除預設數值索引位置loc的元素
    6. pandas.s|pandas.df.drop([],axis=1)刪除指定索引位置的Series|DataFrame;DataFrame刪除列必須加上axis=1
  4. Pandas的資料型別運算
    1. +-*/同維陣列計算,根據行列索引自動補齊運算,即兩個物件的交集,缺失項補NaN;缺失項和兩個物件的位置無關
    2. 不同維度陣列比如二維減去一維或者0維,這樣的運算我們叫廣播運算,預設將高維物件的每行(或每個元素)與低維物件進行計算;和高低維物件的位置無關
    3. df1.add(df2,fill_value=)df1+df2,且兩個物件在計算中的缺失位置用fill_value代替;即元素較少的物件會將空缺位置的元素用fill_value補齊
    4. df1.sub(df2,fill_value=)df1-df2,且兩個物件在計算中的缺失位置用fill_value代替
    5. df1.mul(df2,fill_value=)df1*df2,且兩個物件在計算中的缺失位置用fill_value代替
    6. df1.div(df2,fill_value=)df1/df2,且兩個物件在計算中的缺失位置用fill_value代替
    7. 不同維度的物件在呼叫方法時必須是:高維物件.add(低維物件,axis=0|1);axis=0則在列上計算
    8. 比較運算
      1. 相同維度:只能比較相同資料結構的物件,輸出的元素是相同位置元素的比較
      2. 不同維度:廣播運算,二維和一維計算時,一維列數>二維列數則用0作為二維資料的新列,直到兩個物件列數相同
  5. Pandas資料特徵;s|df即Series或DataFrame;s,df為不可變物件
    1. 排序
      1. df.sort_index(axis=0|1,ascending=T|F)按行|列索引升序|降序排序
      2. s|df.sort_value(by,axis=0|1,ascending=T|F)根據某一列|行的資料進行排序;by:axis軸上的某個索引或索引列表且Series只能用axis=0;NaN統一放在排序末尾
        1. df.sort_value(by,axis=0|1,ascending=T|F),當by=行索引時,axis必須為1
    2. 統計
      1. s|df.sum()計算指定軸的總和,按axis=0計算,在行索引的基礎之上計算每一列值的和
      2. s|df.count()非NaN值的數量,有axis
      3. s|df.mean|median()計算資料的算術平均值|算術中位數,有axis
      4. s|df.var|std()方差|標準差,有axis
      5. s|df.min|max()計算最小|最大值,有axis
      6. s|df.describe()按axis=0的統計彙總,s返回的是Series且屬性為列索引;df返回的是DataFrame,用df.describe().loc[]來檢視每一列的屬性
      7. s|df.rolling(w).function()依次計算相鄰w個元素的和sum(),方差var(),算術平均值mean();rolling(w)即某一列中元素和上面的w個元素的計算
    3. 累計統計
      1. s|df.cumsum()前1,2...,n的和,累加,有axis
      2. s|df.cumprob()前1,2...,n的積,累乘,有axis
      3. s|df.cummax|cummin()前1,2...,n的最大|最小值,有axis
    4. 相關分析,協方差矩陣和相關係數矩陣都為對稱方陣,即cij元素即i和j列資料的協方差
      1. s1.cov(s2)|df.cov()計算協方差矩陣
      2. s1.corr(s2)|df.corr()計算相關係數矩陣
  1. Matplotlib:視覺化;matplotlib.pyplot是繪製各類視覺化圖形的命令子庫,相當於快捷方式,簡寫為plt;最後都用plt.show()展示影象:定位->作圖->細節->savefig()->plt.show()
    1. plt.plot(s)引數為y軸,索引自動生成x軸;
      1. plt.plot(s1,s2)兩個以上的列表則s1為x軸,s2為y軸
      2. format_string='r--x'設定連線點的線條顏色和形式;可省略屬性名
        1. 顏色字元
          1. b,g:藍色,綠色等
          2. #008000:RGB顏色
          3. 0.8:灰度值字串
        2. 曲線形式
          1. -:實線
          2. --:破折線
          3. -.:點劃線
          4. ::虛線
          5. ''或' ':無線條
        3. 點形狀
          1. .:點標記
          2. ,:畫素標記
          3. o:實心圈標記
          4. 1:下花三角標記
          5. 2:上花三角標記
          6. *:星型標記
          7. h:豎六邊形標記
      3. 繪製多條曲線時,不能將各曲線的x省略
      4. 不可省略屬性名,應用於所有線條和點,優先使用屬性名確定的屬性
        1. color="green"控制整體顏色,寫全
        2. linestyle="dashed"線條風格
        3. marker="o"點形狀
        4. markerfacecolor="blue"點顏色
        5. markersize=20點尺寸
      5. *help(plt.plot):https://blog.csdn.net/henni_719/article/details/77370434
    2. plt.ylabel|xlabel|title("")新增y軸|x軸標題|標題
    3. plt.axis([xaxis_start,xaxis_end,yaxis_start,yaxis_end])設定座標軸的起始和結束
    4. plt.savefig("",dpi=)輸出影象儲存為檔案,預設png格式,dpi修改輸出質量
    5. plt.subplot(nrows,ncols,plot_number)將畫布分割槽域並定位到一個子區域;去除,分隔也行;最好將定位賦值給一個物件,在該物件內進行作圖
      1. 如果想要不均勻作圖,可以將較大的區域先劃分出來,再對剩下的區域繼續劃分
  2. pyplot的中文顯示:pyplot並不預設支援中文顯示
    1. matplotlib.rcParams['font.family']='SimHei':rcParams修改字型;rcParams對於matplotlib包是全域性的
      1. 'font.family'字型
        1. SimHei中文黑體
        2. Kaiti楷體
        3. LiSu隸書
        4. FangSong仿宋
        5. YouYuan幼圓
        6. STSong華文宋體
      2. 'font.style'字型風格,normal,italic
      3. 'font.size'字型大小,large,x-small
      4. matplotlib.rcParams['axes.unicode_minus']=False(中文環境下)正常顯示負號
    2. 在有中文輸出的地方,增加一個屬性:fontproperties
      1. plt.xlabel("",fontproperties="",fontsize=)
        1. fontproperties字型,即'font.family'
        2. fontsize即'font.size'
  3. pyplot的文字顯示
    1. plt.text(x,y)以座標軸的(x,y)位置為起點新增文字
      1. r'$\mu$':r即取消轉義字元\的作用,字面意思識別整體字串;$$包住數學公式;\mu即數學u,\y即數學式y,\pi即π,數學字元可能需要在後面加空格' '
    2. plt.grid(True)給座標系新增網格線
    3. plt.annotate(s, xy=arrow_crd, xytext=text_crd, arrowprops=dict)
      1. s即string要新增的字串
      2. xy即箭頭尖的指向點,箭頭尾自動放置
      3. xytext即文字的起點
      4. arrowprops=dict(facecolor='',shrink=0.1,width=2),屬性字典
        1. facecolor即箭頭顏色
        2. shrink即箭頭尾和文字的間隔
        3. width即箭頭最寬的寬度
  4. pyplot的子繪圖區域
    1. plt.subplot2grid(GridSpec, CurSpec, colspan=1, rowspan=1)
      1. GridSpec:(3,3)畫布的區域劃分
      2. CurSpec:(1,0)區域起始位置,索引值從0開始
      3. colspan佔據多少列(往右)
      4. rowspan佔據多少行(往下)
      5. 一般操作:ax1=plt.subplot2grid();ax1.plot|set_xlabel|set_title|annotate()->plt.show();set_:設定子區域的...
    2. matplotlib.rcParams['figure.figsize']=(5,5)在作圖之前設定好整體影象區域的實際尺寸
    3. matplotlib.rc('lines',linewidth=4,color='g')rc方法一次設定多個引數值
    4. plt.tight_layout()在所有子影象作完後調整每個子區域間的間距
  5. *matplotlib.gridspec.GridSpec(3,3)=gs將整個視窗劃分為3*3 -> plt.subplot(gs[0,0])可用gs代替劃分區域,且可以切片來操作不同大小的區域
    1. gs[1,:-1]這個圖佔據第二行,除了最後一列的所有列(:不包含結束,單個-1就包含)
    2. gs[1:,-1]這個圖佔據最有一列,佔據第1行以下所有行
  1. *繪圖的步驟
    1. 確定繪圖範圍matplotlib.rcParams['figure.figsize']=(6,6)
    2. 確定繪圖具體區域ax1=matplotlib.pyplot.subplot(111)
    3. 整理繪圖資料np.array([])資料序列,可以是列表list
      1. x和y的序列
    4. 具體影象函式屬性設定
    5. plt.legend()->plt.show()
  2. Matplotlib繪圖函式:import matplotlib.pyplot as plt
    1. 座標圖plt.plot(x,y,format_string)
    2. 箱線圖plt.boxplot(data,notch,position)
    3. 條形圖plt.bar(left,height,width,bottom)
      1. x|left:標量序列,表示的是條形圖x座標,在x為離散型的條形圖中(x離散為條形圖,x為連續為直方圖),一般為range(len(x))
      2. height:標量或者是標量序列,條形圖的高度
      3. width:標量或者陣列,可選引數(可以省略),預設寬度是0.8
      4. bottom:標量或者陣列,可選引數,條形圖的y座標
      5. x為離散變數即條形圖:plt.bar(range(len(x)),data,width,align,tick_label=x,color='rgb')
        1. range(len(x))輸出x長度的序列0:len(x)
        2. tick_label設定x軸標籤
        3. facecolor='g',color='rgb':前者將條形圖統一成一種顏色,後者可以使用縮寫顏色字元設定每個條形圖顏色不一樣
    4. 堆疊柱狀圖plt.bar(range(len(x)),y1,label,facecolor,align),plt.bar(range(len(x)),y2,bottom=y1,label,facecolor,tick_label,align)label即圖例元素,bottom選擇堆疊影象y1資料在y2下面
      1. plt.legend()顯示圖例
    5. 並列柱狀圖plt.barh(bottom=(0,1,2),width=(25,35,20),height=0.1,color='rgb')
    6. 橫向條形圖plt.barh(width,bottom,left,height)
      1. bottom條形圖y座標
      2. width寬度
      3. height高度,起始是條形圖的柱狀寬度
    7. 極座標圖plt.polar(theta,r)
      1. theta=numpy.linspace(0.0, 2 * np.pi, N, endpoint=False)生成角度的等差數列且不包含2 * np.pi
      2. radii=10 *np.random.rand(N)生成0~10的隨機數,即半徑
      3. width=np.pi / 4 * np.random.rand(N)生成隨機數對應跨越的角度,從0度開始;在設定隨機種子的前提下兩個隨機是相同的
      4. plt.subplot(111,projection='polar').bar(theta,radii,width=width)在設定圖形位置時,設定為極座標圖,且對應的角度,隨機數和寬度
    8. 餅圖plt.pie(sizes,explode,labels=(0,0.2,0.1,0),autopct='%.2f%%',shadow=False,startangle=90)
      1. sizes:每個餅狀的大小(數值|百分比)
      2. explode:與原圖相比的突出距離
      3. labels:每塊餅狀的標記或者名稱
      4. autopct:數學百分比顯示格式,兩個%是轉義字元
      5. shadow:表示扇形是否有陰影
      6. startangle=90:起始角度,即餅圖中的某條分隔線在y或x軸上,形成90度角
      7. plt.pie之後plt.axis('equal')表示座標軸相等,展示圓形餅圖而不是橢圓形
    9. 散點圖plt.scatter(x,y,C,marker)
      1. x資料的橫座標
      2. y資料的縱座標
      3. C顏色
      4. marker點的樣式
    10. 直方圖,x為連續資料,一般繪製正態分佈或其他分佈函式影象:plt.hist(a,bins,normal,histtype,facecolor,alpha)
      1. a:需要繪製的資料,x座標
      2. bins:直方條個數
      3. density:當為1時表示資料出現的頻率,當為0時表示資料出現的頻數
      4. histtype:條形的類別,預設的是bar
      5. facecolor:直方條的顏色
      6. alpha:直方條透明度(值越小,越來越透明)