pandas 基礎用法

来源:https://www.cnblogs.com/haoxi/archive/2018/07/25/9363501.html
-Advertisement-
Play Games

pandas 是一個基於 Numpy 構建, 強大的數據分析工具包 主要功能 獨特的數據結構 DataFrame, Series 集成時間序列功能 提供豐富的數學運算操作 靈活處理缺失數據 Series 一維數組 Series 是一種類似於一維數組的對象, 由一組數據和一組與之相關的數據標簽(索引) ...


pandas 是一個基於 Numpy 構建, 強大的數據分析工具包

主要功能

  • 獨特的數據結構 DataFrame, Series
  • 集成時間序列功能
  • 提供豐富的數學運算操作
  • 靈活處理缺失數據

Series 一維數組

Series 是一種類似於一維數組的對象, 由一組數據和一組與之相關的數據標簽(索引)組成

創建方式

pd.Series([4, 7 ,5, -3])
pd.Series([4, 7 ,5, -3], index=['a', 'b', 'c', 'd'])
pd.Series({'a':1, 'b', 2})
pd.Series(0, index=['a', 'b', 'c', 'd'])

# 獲取值數組
sr = pd.Series([4, 7 ,5, -3])
sr.value

# 獲取索引數組
sr = pd.Series([4, 7 ,5, -3])
sr.index

Series 支持array的特性(下標)

  • 從 ndarry 創建 Series
  • 與標量直接運算
  • 兩個 Series 運算
  • 索引
  • 切片
  • 通用函數 np.abs(sr)
  • 布爾值過濾 sr[sr>0]

Series 支持字典的特性(標簽)

  • 從字典創建 Series Series(dict)
  • in 運算
  • 鍵索引

整數索引

如果索引是整數, 則根據下標取值時總是面向標簽的.
此時可通過 loc方法(將索引解釋為標簽)和iloc方法(將索引解釋為下標)

Series 數據計算

sr1 = pd.Series([12,23,34], index=['c', 'a', 'd'])
sr2 = pd.Series([11,20,10], index=['d', 'c', 'a'])
print(sr1 + sr2)
# 相關計算方法 add, sub, div, mul

pandas 在進行兩個 Series 對象運算時, 會按索引進行對齊然後計算.

數據對齊

若兩個 Series 對象的索引不完全相同, 則結果的索引是兩個操作數索引的並集. 如果只有一個對象在某索引下有值, 則結果中該索引的值為NaN.

缺失數據處理辦法

sr1.add(sr2, fill_value=0) 填充缺失的值
dropna() 過濾掉值為NaN的行
fillna() 填充缺失數據
isnull() 返回布爾數組, 缺失值對應為True
notnull() 返回buer數據, 缺失值對應為False

# 過濾缺失數據
sr.dropna() 
sr[data.notnull()]

DataFrame

DataFrame 是一個表格型的數據結構, 含有一組有序的列. 可以看做是 Series 組成的字典, 並且公用一個索引.

創建 DataFrame 的方法有很多種

# 手動創建
pd.DataFrame({'one':[1,2,3,4], 'two':[4,3,2,1]})
pd.DataFrame({'one':pd.Series([1,2,3], index=['a','b', 'c']), 'two':pd.Series([1,2,3,4], index=['a','b','c','d'])

# 從csv文件讀取與寫入
df.read_csv('filename.csv')
df.to_csv()

常用屬性

  • index 獲取索引
  • T 轉置
  • columns 獲取列索引
  • values 獲取值數組
  • describe() 獲取快速統計

索引和切片

DataFrame 是一個二維數據類型, 所以有行索引列索引, 可以通過標簽和位置兩種方法進行索引和切片

  • loc 索引方法和 iloc 下標方法
    • 使用方法: 逗號隔開, 前面是行索引, 後面是列索引
    • 行/列索引部分可以是常規索引, 切片, 布爾值索引, 花式索引任意搭配

數據對齊與缺失數據

DataFrame 對象在運算時, 同樣會進行數據對齊, 其行索引和列索引分別對齊

處理缺失數據的相關方法

  • dropna(axis=0, where='any', ...)
  • fillna()
  • isnull()
  • notnull()

pandas 常用方法

  • mean(axis=0, skipna=False) 對列(行)求平均值
  • sum(axis=1) 對列(行)求和
  • sort_index(axis, ..., ascending) 對列(行)索引排序
  • sort_values(by, axis, ascending) 按某一列(行)的值排序
  • apply(func, axis=0) 將自定義函數應用在各行或各列上, func可返回標量或Series
  • NumPy 的通用函數同樣適用於pandas
  • applymap(func) 將函數應用在 DataFrame 各個元素上
  • map(func) 將函數應用在 Series 各個元素上

時間處理

pandas基於dateutil來處理時間對象

  • dateutil.parser.parse() dateutil 原生時間處理方法
  • pd.to_datetime() pandas 成組處理時間對象
  • data_range() 產生時間對象數組
    • start 開始時間
    • end 結束時間
    • periods 時間長度
    • freq 時間頻率, 預設為'D', 可選為H(our), W(eek), B(usiness), S(emi-)M(onth), (min)T(es), S(econd), A(year)
時間序列

時間序列是以時間對象為索引的Series或DataFrame, datetime對象作為索引時是存儲在DatetimeIndex對象中的.

時間序列的特色功能:

  • 傳入"年"或"年月"作為切片方式
  • 傳入日期範圍作為切片方式
  • 豐富的函數支持: resample(), strftime(), ...

文件處理

  • read_csvread_table 函數
    • sep 制定分隔符, 可用正則表達式如'\s+'
    • header = None 指定文件無列名
    • name 指定列名
    • index_col 指定某列為索引
    • skip_row 指定跳過某些行
    • na_values 指定某些字元串表示缺失值
    • parse_dates 指定某些列是否被解析為日期, 類型為布爾值或列表
  • to_csv 函數
    • sep 指定文件函數
    • na_rep 指定缺失值轉換的字元串, 預設為空字元串
    • header=False 不輸出列名一行
    • index=False 不輸出行索引一列
    • columns 指定輸出的列, 傳入列表

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

-Advertisement-
Play Games
更多相關文章
  • 改進版 BFS cpp include using namespace std; define coordi(x,y) ( m (x 1)+y ) const int maxn = 30; const int dx[] = {0,0,1, 1}; const int dy[] = {1, 1,0,0 ...
  • eclipse中: 1.單擊整個項目 run as - maven clean - maven install 2.找到項目所在的路徑 找到所有的jar包 3.把jar包放到linux對應的文件夾 linux中部署項目:1.查看jar是否在運行中 ps -ef | grep SpliderWeb-0 ...
  • Pygame介紹: Pygame是跨平臺Python模塊,專為電子游戲設計,包含圖像、聲音。Pygame是跨平臺Python模塊,專為電子游戲設計,包含圖像、聲音。建立在SDL基礎上,允許實時電子游戲研發而無需被低級語言(如機器語言和彙編語言)束縛。 安裝過程: 1、環境準備:1、安裝python環 ...
  • [TOC] 1.Python正則表達式模塊 1.1 正則表達式處理字元串主要有四大功能 1. 匹配 查看一個字元串是否符合正則表達式的語法,一般返回true或者false 2. 獲取 正則表達式來提取字元串中符合要求的文本 3. 替換 查找字元串中符合正則表達式的文本,並用相應的字元串替換 4. 分 ...
  • 迷宮問題思路 根據昨天的博客,有如下幾種解決方案 1. 克魯斯卡爾 ,為避免死迴圈,需要設定優化路徑的次數。 2. Prim,為避免死迴圈,需要設定優化路徑的次數,暫定200次。 3. BFS , 實現簡單,無死迴圈。 4. DFS , 實現簡單,無死迴圈,複雜度較低。 5. 動態規劃,實時根據權重 ...
  • 1、生成Personal Access Tokens 選擇右上角用戶信息setting—>Access Tokens 2、常用Gitlab API #獲取所有的項目信息 #private_token來自Access Tokens http://192.168.199.184/api/v3/proje ...
  • Python中append、extend與insert幾個方法的區別 ...
  • 繼上一篇Java核心技術第五章——1.類、超類、子類(1) 6.重載解析 假如調用ClassName.Method(args) 1.編譯器列出類ClassName所有名為Method的方法。 2.編譯器將查看調用方法提供的參數類型(args)。 3.根據參數類型匹配所有名為Method的方法。 4. ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...