Python三方庫:Pandas(數據分析)

来源:https://www.cnblogs.com/guyuyun/archive/2020/07/17/13296646.html
-Advertisement-
Play Games

Pandas是一個基於Numpy的數據分析包,這個庫就是為數據分析而生的,你可以向操作Excel一樣操作Pandas,實現數據的選擇排序、篩選過濾、統計分析等功能,實際上,Pandas就是Python中的Excel,學習Pandas之後你會更加深刻的理解這句話是多麼的形象準確的。 為了簡化表示,本文 ...


Pandas是一個基於Numpy的數據分析包,這個庫就是為數據分析而生的,你可以像操作Excel一樣操作Pandas,實現數據的選擇排序、篩選過濾、統計分析等功能,實際上,Pandas就是Python中的Excel,在學習Pandas之後你會更加深刻的理解這句話是多麼的形象準確的。

為了簡化表示,本文示例中的pd表示pandas庫,即import pandas as pd。

 

一、基礎數據結構DataFrame和Series

Pandas中最基礎的數據結構就是DataFrame和Series,從數組的角度理解,可以將DataFrame看作是二維數組,將Series看作是一維數組,當然,最直觀的理解就是DataFrame是一個Excel表格,由行索引、列名和數據(二維數組)組成,而Series是則表中的一列數據,只有行索引和數據(一維數組)兩部分。

1. 創建DataFrame和Series

一個DataFrame可以看作是由行索引、列名及數據(二維數組)三部分構成,對於行索引,在Pandas中的處理是比較特殊的,比如有n行數據,預設情況下,行索引會是我們熟悉的從0到n-1的索引號,但是我們也可以自己指定每一行的行索引,或者說是行標簽,通過行標簽同樣也能取到對應行的數據。當然,列名如果沒有指定,同樣是0到n-1的序號。

通過列表創建DataFrame:

通過字典創建DataFrame:

通過文件創建DataFrame:

csv文件數據

代碼示例

 

通過列表創建Series:

 

2. 查看DataFrame和Series

DataFrame和Series對象有許多快速查看自身信息的屬性和方法,因為Series的許多屬性和方法與DataFrame都是相似的,所以這裡就只列一些DataFrame中比較常用的:

  • DataFame.columns:表格的列名。
  • DataFame.dtypes:列的數據類型。
  • DataFame.index:表格的行索引。
  • DataFame.size:表格中的元素個數。
  • DataFame.values:表格中的數據,返回的是一個二維數組對象。
  • DataFame.head(n):預設展示表格前5行數據,也可以指定展示前n行數據。
  • DataFame.tail(n):預設展示表格末尾5行數據,也可以指定展示預設n行數據。
  • DataFame.info():查看表格的一個簡單彙總信息,包括有多少行、有多少列、每列的數據類型等信息。

簡單示例:

 

二、索引操作

這裡說的索引指的是行索引或者說行標簽,Pandas中關於行索引有許多巧妙且實用的用法,能幫助我們更好的進行數據分析,具體見示例代碼。

對於索引的使用,即可以像Numpy中那樣去操作Pandas中的索引,也可以使用iloc()方法和loc()方法去操作索引,區別在於iloc()方法只能用於原始的0到n-1索引,而loc()方法可以將自己指定的行標簽像索引一樣去操作,具體見示例代碼。

 

三、常用方法

因為Pandas的核心是Numpy庫,所以Numpy中的一些特色用法在Pandas中也是可以使用的,比如通過算術運算符實現對每個元素的加減乘除等操作,以及使用max、mean等統計方法在Pandas中也都是支持的。

以下列舉一些DataFrame和Series的常用操作和方法(具體的參數使用請參考對應的幫助文檔或官方API文檔),為了簡化表示,df代表DataFrame對象,s代表Series對象,具體使用效果見示例代碼。

  • [df/s]+3:就像Numpy中的數組操作一樣,表示對錶格中的每個元素進行加法運算,當然,其他的算術運算也是可以的。(這裡的3只是舉例用的數字)
  • [df/s].max():返回表格中各列的最大值。
  • [df/s].min():返回表格中各列的最小值。
  • [df/s].mean():返回表格中各列的平均值。
  • [df/s].replace(to_replace=None, value=None):將表格中的to_replace替換為value。
  • [df/s].append(other):將一個表格追加到另一個表格中,並返回一個合併之後的新表格。
  • [df/s].drop(labels=None, axis=0, index=None, columns=None):刪除指定內容。
  • [df/s].drop_duplicates():刪除重覆值,可以使用subset參數刪除指定列的重覆值。
  • [df/s].isnull():判斷表格是否為空。
  • [df/s].fillna(value):將空值填充為指定值。
  • pd.cut(x, bins, labels=None):按照bins參數給數組x分段,如果x是一個具體的數字,則會將數組平均分成x段,如果x是一個列表,則按照列表表示的區間來分段,同時可以使用labels參數給每個區間指定一個label。
  • df.describe():將表格中數據類型為數字的元素篩選出來,然後按列進行一些簡單的統計。
  • df.cov():計算斜方差。
  • df.corr():計算相關係數,計算結果在[-1, 1]之間,1表示兩者的變化趨勢是相同的,-1則表示變化趨勢是相反的,0則表示變化趨勢完全不相關。
  • df.copy()或s.copy():返回一個表格的副本。
  • df.sort_values(by, ascending=True):按照by參數指定的列進行排序,可以使用ascending參數指定以升序排序。
  • s > 3:返回列中每個元素的條件判斷結果(即布爾索引),用法和Numpy一樣。(這裡的3只是舉例用的數字)
  • s.value_counts(ascending=False, bins=None):對列中的每個值進行個數統計,可以使用ascending參數指定統計結果以升序排列,使用bins參數讓統計結果分段顯示。
  • s.str.lower():轉化為小寫。
  • s.str.upper():轉化為大寫。
  • s.str.len():返回字元串的長度。
  • s.str.strip():去除兩邊空白內容,其他類似功能還有lstrip()和rstrip()。
  • s.str.replace(pat, repl):將字元串中的pat替換為repl。
  • s.str.split(pat=None, expand=False):將字元串根據pat分隔,返回一個DataFrame對象,如果指定expand為True,會將DataFrame“拉直”變為一個Series對象。
  • s.str.contains(pat):判斷是否包含指定值pat。
  • s.str.get_dummies(sep='|'):指定分隔符,並返回一個DataFrame對象,這個方法常用於關聯分析。

 

四、SQL功能

Pandas中有一些方法能實現像SQL一樣的功能,如groupby方法可以實現SQL中的分組功能,merge方法可以實現SQL中的表連接功能,具體見示例代碼。

 

五、透視表

所謂透視表,就是使用pivot()方法或pivot_table()方法從原本的表格中抽取三列內容並將其轉換為另一個表格,以便更直觀、更方便地去觀察和分析這三列數據,具體效果看了示例就明白了。

 

六、時間處理

Pandas中有一套自己的時間字元串處理方法,而且使用起來也很方便,如pd.Timestamp()可以將字元串轉換為時間戳,pd.Timedelta()可以進行時間的加減運算,pd.to_datetime()可以將字元串轉換為日期。如果遇到了時間格式字元串,建議優先考慮Pandas自帶的時間處理方式。

 

七、批量處理map和apply

如果想要對錶格中某行或某列的所有元素執行同一個操作,可以使用map()方法, 而想要對錶格中所有行或所有列都執行同一個操作,則可以使用apply()方法。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Ajax 的原理簡單來說是在⽤戶和伺服器之間加了—個中間層( AJAX 引擎),通過XmlHttpRequest 對象來向伺服器發非同步請求,從伺服器獲得數據,然後⽤ javascrip t 來操作 DOM ⽽更新⻚⾯。使⽤戶操作與伺服器響應非同步化。這其中最關鍵的⼀步就是從服 務器獲得請求數據 Aja ...
  • 1. 對CSS優化的理解(比如:代碼層面) 2. ES6的理解(let const變數/箭頭函數/promise.all併發/ES6的模塊化和node.js模塊化的區別) 3. jquery鏈式調用/鏈式編程的原理 4. element的二次封裝 5. js的繼承有哪幾種 6. 垂直居中有哪些方式 ...
  • 值 中文描述 英文名稱 100 繼續 Continue 101 交換協議 Switching Protocols 102 處理中 Processing 103 早期提示 Early Hints 104-199 未分配 Unassigned 200 請求成功 OK 201 已建立 Created 20 ...
  • 前端VUE頁面上的導出或者下載功能,一般是調用後端的一個介面,由介面生成excel,word這些文件的流信息,返回給vue,然後由vue去構建下載的動作,這邊整理了一下,封裝了一下,方便以後復用。 封裝一個download文件 使用年月日時分秒毫秒做為文件的名稱,下載為excel文件 /** * 下 ...
  • 對於前端入行現在大概有這麼幾種:1.大學里修前端課程,2.查資料看視頻自學前端,3.參加前端培訓。 對於這三種學習方式,自學前端是屬於最難的一種,咱們先簡單的說一下另外兩種方式, 然後我再著重說下自學前端。除了自學前端外,外兩種學習式稱為被動學習。大家可以看到,不管是大學里前端課程還是培訓學習,都有 ...
  • 作者:阿翔 如果你已經閱讀過 《京喜前端自動化測試之路(一)》,可跳過前言部分閱讀。 前言 京喜(原京東拼購)項目,作為京東戰略級業務,擁有千萬級別的流量入口。為了保障線上業務的穩定運行,每月例行開展前端容災演習,主要包含小程式及 H5 版本,要求各頁面各模塊在異常情況下進行適當的降級處理,不能出現 ...
  • 最近看見別人可以使用倉庫展現自己的靜態頁面 如:https://li_shang_shan.gitee.io/xiaomi/ 我想來到這裡來的小伙伴,都知道怎麼搭建自己的碼雲倉庫,以及上傳代碼到自己的倉庫。所以前面的東西就不贅述了。直接上正題 上傳的代碼最好有一個index,html的文件,代碼進入 ...
  • 不知不覺,在開發這條道路上摸爬打滾也有些年頭了,偶爾回頭看看以前寫的代碼,真可謂粗糙至極。當然了,那時候還是小白,代碼寫得難看些情有可原,不過現在可不能再用以前的標準去衡量自己了,因此掌握一些高級架構技巧是必須的,設計模式正是一個很好的敲門磚。 在我看來,設計模式不僅僅只是一套模板,要想掌握設計模式 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...