手把手教你使用Python作數據分析

1、數據分析是什麼

數據分析是指用適當的統計分析方法對收集來的大量數據進行分析,將它們加以彙總和理解並消化,以求最大化地開發數據的功能,發揮數據的做用,使得數據的價值最大化python

2、數據分析是作什麼的

數據分析是爲了提取有用信息和造成結論而對數據加以詳細研究和歸納總結的過程。 數據分析的數學基礎在20世紀早期就已確立,但直到計算機的出現才使得實際操做成爲可能,並使得數據分析得以推廣。數據庫

  • 分析用戶的消費行爲
    • 制定促銷活動的方案
    • 制定促銷時間和粒度
    • 計算用戶的活躍度
    • 分析產品的回購力度
  • 分析廣告點擊率
    • 決定投放時間
    • 制定廣告定向人羣方案
    • 決定相關平臺的投放
  • ......

數據分析使用適當的方法對收集來的大量數據進行分析,幫助人們作出判斷,以便採起適當的行動數組

  • 保險公司從大量賠付申請數據中判斷哪些爲騙保的可能
  • 支付寶經過從大量的用戶消費記錄和行爲自動調整花唄的額度
  • 短視頻平臺經過用戶的點擊和觀看行爲數據針對性的給用戶推送喜歡的視頻

3、爲何學習數據分析

  • 崗位的需求
  • 是 Python 數據科學的基礎
  • 是機器學習的基礎

4、數據分析實現流程

  • 提出問題
  • 準備數據
  • 分析數據
  • 得到結論
  • 成果可視化

5、數據分析環境的搭建

1. Anaconda

  • 官網:www.anaconda.com 下載安裝對應安裝包便可微信

  • 注意:安裝目錄不能夠有中文和特殊符號markdown

Anaconda集成好了數據分析和機器學習中所須要的所有環境數據結構

2. Jupyter

  • Jupyter就是Anaconda提供的一個基於Web的可視化開發工具

3. Jupyter的基本使用

  • 啓動:在終端中輸入:jupyter notebook,按下回車便可app

  • 新建文件:New -->> python3dom

  • Cell(代碼塊)有兩種模式機器學習

    • code:編寫代碼
    • markdown:編寫筆記
  • 快捷鍵函數

    • 添加cell:ab

    • 刪除:x

    • 修改cell的模式

      • 修改爲markdown模式:m
      • 修改爲code模式:y
    • 執行cell內代碼:shift+enter

    • 自動補全:tab

    • 打開幫助文檔:shift+tab

6、如何用Python進行數據分析

在Python中咱們數據分析離不開如下三劍客

  • Numpy
  • Pandas
  • Matplotlib

Numpy模塊

  • Numpy(Numerical Python) 是 Python 語言中作科學計算的基礎庫。重在於數值計算,也是大部分 Python 科學計算庫的基礎,多用於在大型、多維數組上執行的數值運算。

1. Numpy的建立

  • 使用 array() 建立一個一維數組

image-20210420104657521.png

  • 使用 array() 建立一個多維數組

image-20210420104823728.png

  • 使用 zero() 建立一個多維數組

image-20210420105937190.png

  • 使用 ones() 建立一個多維數組

image-20210420110043717.png

  • 使用 linspace() 建立一維的等差數列數組

image-20210420110217716.png

  • 使用 arange() 建立一維的等差數列數組

image-20210420110447194.png

  • 使用 random.randint() 建立隨機的多維數組

image-20210420110653038.png

2. Numpy的經常使用屬性

  • shape
  • ndim
  • size
  • dtype

image-20210420111228011.png

3. Numpy的索引和切片

  • 索引操做和列表同理

image-20210420111525881.png

  • 切片操做

image-20210420112645202.png

4. Numpy的矩陣操做

  • 矩陣變形

image-20210420113434006.png

  • 級聯操做

    • 將多個 Numpy 數組進行橫向或者縱向的拼接
    • axis軸向參數
      • 0:列

      • 1:行

image-20210420113641458.png

  • 經常使用的聚合操做

    • sum, max, min, mean

image-20210420114132219.png

  • 經常使用的統計函數

    • 標準差:一組數據平均值分散程度的一種度量

    • 方差:統計中的方差是每一個樣本值與全體樣本值的平均數之差的平方值的平均數,即 mean((x-x.mean())**2。換句話說,標準差就是方差的平方根。

image-20210420114742848.png

Pandas模塊

1. 爲何學習Pandas

Numpy可以幫助咱們處理的是數值型的數據,而Pandas能夠幫咱們處理除數值型之外的其餘類型數據,

2. Pandas的數據結構

  • Series
    • 是一種相似於一維數組的對象,由下面兩個部分組成:
      • values:一組數據(ndarray類型)
      • index:相關的數據索引標籤
  • DataFrame
    • 是一個表格型的數據結構。其既有行索引,也有列索引。
      • 行索引:index
      • 列索引:columns
      • 值:values

3. Series操做

3.1 Series的建立

image-20210420115900249.png

index用來指定顯式索引,能夠加強Series的可讀性。

image-20210420172606865.png 也可使用字典做爲數據源。

image-20210420133823436.png

3.2 Series的索引和切片

image-20210420170716198.png

3.3 Series的經常使用屬性
  • shape
  • size
  • index
  • values
  • dtypes

image-20210420171052667.png

3.4 Series的經常使用方法
  • head(), tail()
  • unique()
  • isnull(), notnull()

image-20210420172329343.png

3.5 Series的算數運算

索引一致的元素進行算數運算不然補空

image-20210420172309289.png

4. DataFrame操做

4.1 DataFrame的建立

image-20210420172737700.png 可以使用 ndarray 建立。

image-20210420172851534.png

也可使用字典做爲數據源。

image-20210420173025013.png

index 用來指定顯式索引,能夠加強 DataFrame 的可讀性。

image-20210420173420885.png

4.2 DataFrame索引和切片
  • iloc:經過隱式索引取行

  • loc:經過顯式索引取行

  • 對行進行切片

  • 對列進行切片

image-20210420175437867.png

4.3 DataFrame經常使用屬性
  • shape
  • values
  • columns
  • index

image-20210420174019970.png

4.4 DataFrame的經常使用方法

同Series

4.5 DataFrame的算數運算

同Series

4.6 DataFrame的級聯和合並

級聯操做

  • pd.concat
  • pd.append

接下來咱們僞造兩組DataFrame數據。

image-20210423174109593.png

使用pd.concat()

image-20210423174327458.png

  • 匹配級聯
    • 橫向級聯
  • 不匹配級聯
    • 不匹配指的是級聯的維度和索引不一致。例如縱向級聯時列索引不一致,橫向級聯時行索引不一致。
    • 有兩種鏈接方式
      • 外鏈接:補NaN(默認模式)
      • 內鏈接:只鏈接匹配的項

PS:若是想要保留數據的完整性必須使用參數 join='outer'(外鏈接)

使用 pd.append()

  • 只能縱向級聯,而且只能外級聯,不能夠內級聯(通常不用)。

image-20210423175230569.png

合併操做

pd.merge()

  • mergeconcat 的區別在於,merge 須要依據某一共同列來進行合併。
  • 使用 pd.merge() 合併時,會自動根據二者相同 column 名稱的那一列做爲 key 來進行合併。
  • 注意:每一列元素的順序不要求一致

一對一合併

首先咱們來僞造兩組 DataFrame。

image-20210423175854569.png

使用 pd.merge()

image-20210423180154083.png

一對多合併

首先咱們來僞造兩組 DataFrame。

image-20210426145551172.png

使用 pd.merge()

image-20210426145720405.png

多對多合併

首先咱們來僞造兩組 DataFrame。

image-20210426145938705.png

使用 pd.merge()

image-20210426150145061.png

merge()方法還可使用left_on參數和right_on參數哦,how這個參數也能夠指定不一樣的鏈接方式。

5. 基於Pandas的數據清洗

5.1 爲何須要作數據清洗
  • 原始數據中可能存在缺失值(空值)
    • 這些值是沒有意義的,而且會干擾咱們分析結果的產生
  • 重複值
    • 重複值是沒有必要屢次分析和處理的
  • 異常值
    • 因爲數據採集手段不一樣等,數據中可能會產生異常值,異常值一樣會干擾咱們分析結果的產生
5.2 處理缺失值
  • 有兩種缺失值:
    • None
    • np.nan(NaN)
  • 兩種缺失值的區別
    • None:None對象類型
    • np.nan:浮點型

爲何在數據分析中須要用到浮點類型的空而不是對象類型的?

  • None+1會報 TypeError,而 np.nan+1 結果是 nan。它不會干擾或者中斷運算。
  • NaN能夠參與運算
  • None不能夠參與運算

在Pandas中若是數據中遇到了None形式的空值則Pandas會將其強轉成NaN的類型。

缺失值處理操做

咱們來僞造一組帶有缺失值的數據。

image-20210421105812351.png

  • 方法1:對缺失值進行過濾(刪除空所在的行數據)

    • isnull() 搭配 any()

image-20210421110937000.png

  • notnull() 搭配 all()

image-20210421111035988.png

  • 使用 dropna()能夠直接將缺失的行或者列數據進行刪除

image-20210421111121661.png

  • 方法2:fillna() 對缺失值進行填充

image-20210421112951383.png

5.3 處理重複數據

咱們來僞造一組帶有重複值的數據。

image-20210421113154526.png

  • 使用drop_duplicates()

image-20210421113545095.png

5.4  處理異常值

異常值是什麼?

  • 異常值指的是可能會對具備實質性意義的估計產生偏見或影響,而且會增長偏差方差的值。

接下來咱們僞造一組帶有異常值的數據。

image-20210421114724672.png

而後咱們來實現異常值的清洗。

image-20210421115059744.png

6. Pandas高級操做

6.1 替換操做
  •  替換操做能夠同步做用於Series和DataFrame中
  •  單值替換
    • 普通替換:替換全部符合要求的元素
      • to_replace=15, value='value'
    • 按列指定單值替換
      • to_replace={列標籤: 替換值}, value='value'
  •  多值替換
    • 列表替換
      • to_replace=[], value=[]
    • 字典替換(推薦)
      • to_replace={to_replace: value, to_replace: value}

首先咱們來僞造一組DataFrame。

image-20210426153815861.png

使用 replace()

image-20210426154205359.png

6.2 映射操做
  • 概念:建立一個映射關係列表,把values元素和一個特定的標籤或者字符串綁定(給一個元素值提供不一樣的表現形式)
  • map是Series的方法,只能被Series調用

首先咱們來僞造一組DataFrame。

image-20210426154433046.png 使用 map()

image-20210426154744572.png

例:超過3000部分的薪資繳納50%的稅,計算每一個人的稅後薪資

image-20210426155323987.png

6.3 分組聚合操做
  • 數據分類處理的核心:
    • groupby() 函數
    • groups 屬性查看分組狀況

分組

接下里咱們僞造一組DataFrame。

image-20210426155721353.png 使用 groupby()groups

image-20210426160738230.png

聚合

image-20210426161010023.png

高級數據聚合

  • 使用 groupby() 分組後,也可使用 transform()apply() 提供自定義函數實現更多的運算
  • df.groupby('item')['price'].sum() <==> df.groupby('item')['price'].apply(sum)
  • transform()apply() 都會進行運算,在 transform() 或者 apply() 中傳入函數便可
  • transform()apply() 也能夠傳入一個 lambda 表達式

image-20210426161433962.png

6.4 數據加載
  • 讀取csv文件數據

image-20210426161655915.png

  • 讀取數據庫中的數據

image-20210426162045996.png

matplotlib模塊

  • matplotlib模塊能夠幫助咱們輕鬆的將數據製成圖表可視化展現。

首先咱們倒入全局的模塊

image-20210426150850320.png

1. 繪製線形圖

1.1 繪製單條和多條線形圖

image-20210426151212854.png

1.2 設置座標系的比例

image-20210426151427197.png

1.3 設置圖例

image-20210426151552420.png

1.4 設置軸的標識

image-20210426151754638.png

1.5 圖例保存

image-20210426152007557.png

1.6 曲線的樣式和風格

image-20210426152150305.png

還有其餘多種參數的樣式哦,詳情請見庫的源代碼。

2. 繪製柱狀圖

image-20210426152326698.png

其他用法和線形圖相似。

3. 繪製直方圖

  • 是一個特殊的柱狀圖,又叫作密度圖。
  • plt.hist()的參數
    • bins:能夠是一個bin數量的整數值,也能夠是表示bin的一個序列。默認值爲10
    • normed:若是值爲True,直方圖的值將進行歸一化處理,造成機率密度,默認值爲False
    • color:指定直方圖的顏色。能夠是單一顏色值或顏色的序列。若是指定了多個數據集合,例如DataFrame對象,顏色序列將會設置爲相同順序。若是未指定,將會使用一個默認的線條顏色
    • orientation:經過設置 orientationhorizontal 建立水平直方圖。默認值爲 vertical

image-20210426152835771.png

其他用法和線形圖相似。

4. 繪製餅圖

  • pie(),餅圖也只有一個參數 x
  • 餅圖適合展現各部分佔整體的比例,條形圖適合比較各部分的大小

image-20210426153018460.png

其他用法和線形圖相似。

5. 散點圖

  • scatter(), 因變量隨自變量而變化的大體趨勢

image-20210426153246265.png

其他用法和線形圖相似。

PS:歡迎提出寶貴意見,如想詢問技術問題能夠留言區留言或加開發人員的微信(微信號:x118422)進行諮詢~

相關文章
相關標籤/搜索