數據分析之pandas的使用

来源:https://www.cnblogs.com/ivanlee717/archive/2022/12/16/16987592.html
-Advertisement-
Play Games

pandas 為什麼學習pandas numpy已經可以幫助我們進行數據的處理了,那麼學習pandas的目的是什麼呢? numpy能夠幫助我們處理的是數值型的數據,當然在數據分析中除了數值型的數據還有好多其他類型的數據(字元串,時間序列),那麼pandas就可以幫我們很好的處理除了數值型的其他數據! ...


pandas

為什麼學習pandas

  • numpy已經可以幫助我們進行數據的處理了,那麼學習pandas的目的是什麼呢?
    • numpy能夠幫助我們處理的是數值型的數據,當然在數據分析中除了數值型的數據還有好多其他類型的數據(字元串,時間序列),那麼pandas就可以幫我們很好的處理除了數值型的其他數據!

什麼是pandas?

  • 首先先來認識pandas中的兩個常用的類
    • Series
    • DataFrame

Series

  • Series是一種類似與一維數組的對象,由下麵兩個部分組成:

    • values:一組數據(ndarray類型)
    • index:相關的數據索引標簽
  • Series的創建

    • 由列表或numpy數組創建
    • 由字典創建
from pandas import Series
s = Series(data=[127,2,3,'regina'])

image-20221215173915095

image-20221215175027237

為什麼需要有顯示索引?

答:顯示索引可以增強Series 的可讀性

還可以直接引入字典:

image-20221215175316761

Series的索引和切片

s[0] --> regina
s.姓名 --> regina
s[0:2] --> 
姓名    regina
年齡        23
dtype: object
  • Series的常用屬性
    • shape
    • size
    • index 返回索引
    • values 返回值
s.shape
s.size
s.index #返回索引
s.values #返回值
s.dtype #元素的類型
  • Series的常用方法

    • head(),tail()

      image-20221216113457246

      這裡的head和tail預設是5,tail顯示最後n個數據

    • unique() 去重

      image-20221216113639939

    • isnull(),notnull()

    • add() sub() mul() div()

      只有索引一致的數據才可以相加

      image-20221216113810596

      同時也只有數據類型一樣的才能相加

      image-20221216113931735

DataFrame

  • DataFrame是一個【表格型】的數據結構。DataFrame由按一定順序排列的多列數據組成。設計初衷是將Series的使用場景從一維拓展到多維。DataFrame既有行索引,也有列索引。

    • 行索引:index
    • 列索引:columns
    • 值:values
  • DataFrame的創建

    • ndarray創建

      image-20221216114737560

    • 字典創建

      image-20221216114908080

  • DataFrame的屬性

    • values、columns、index、shape

    image-20221216115319873

============================================

練習:

根據以下考試成績表,創建一個DataFrame,命名為df:

 regina  ivanlee  
語文 150  		0
數學 150  		0
英語 150  		0
理綜 300  		0

============================================

image-20221216115858360

  • DataFrame索引操作

    df = DataFrame(data=np.random.randint(60,100,size=(5,5)),columns=['A','B','C','D','E'],index=[1,2,3,4,5])
    

    image-20221216133947727

    • 對行進行索引

      • iloc: 通過隱式索引取行 (不根據所定義的index取值)

        image-20221216144916020

        取單個元素:

        df.iloc[,]

      • loc: 通過顯示索引取行

        image-20221216134958627

    • 隊列進行索引

      df['A'] #取單列,如果df有顯示的索引,通過索引機制去行或者列的時候只可以使用顯示索引

      image-20221216134039056

      image-20221216134101073

    • 對元素進行索引

      取多個元素:

      image-20221216145526288

  • DataFrame的切片操作

    • 對行進行切片
    • 對列進行切片
  • df索引和切片操作

    • 索引:

      • df[col]:取列
      • df.loc[index]:取行
      • df.iloc[index,col]:取元素
    • 切片:

      • df[index1:index3]:切行

        image-20221216150046991

      • df.iloc[:,col1:col3]:切列

        image-20221216150125128

DataFrame的計算與Series一致

  • 時間數據類型的轉換

    • pd.to_datetime(col)

      dic = {
          'time':['2010-10-10','2011-11-20','2020-01-10'],
          'temp':[33,31,30]
      }
      df = DataFrame(data=dic) df['time'].dtype = 'O'
      import pandas as pd
      #將time列的數據類型轉換成時間序列類型
      df['time'] = pd.to_datetime(df['time'])
      df['time']
      

      image-20221216151216436

  • 將某一列設置為行索引

    • df.set_index()

      上圖中的索引是隱式索引的012,如果要將time列作為行索引

      #將time列作為源數據的行索引
      df.set_index('time',inplace=True)
      

      image-20221216154809733

本文來自博客園,作者:ivanlee717,轉載請註明原文鏈接:https://www.cnblogs.com/ivanlee717/p/16987592.html


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

-Advertisement-
Play Games
更多相關文章
  • 1 鎖優化歷史 synchronized 從 JDK1.0到JDK1.5 ,效率低 JDK1.5到JDK1.6,JVM團隊對synchronized進行深度優化,加入了:適應性自旋、鎖消除、鎖膨脹、輕量級鎖、偏向鎖 等優化技術 JDK1.5 開始,加入java.util.concurrent,提供A ...
  • 小程式中實現頁面跳轉 對標簽綁定點擊事件 data是點擊時傳入的參數 <view bindtap="clickMe" data-nid="123" data-name="SD" >點我跳轉</view> /** * 用戶點擊事件 */ clickMe(e){ console.log(e) var n ...
  • 我要說的是我們改變 num屬性 的類型,無論是由 Integer改成Long,還是由Long改成Integer,只要num的值在Integer取值範圍內,就不會影響hessian序列化。 ...
  • 股票分析 需求:股票分析 使用tushare包獲取某股票的歷史行情數據。 輸出該股票所有收盤比開盤上漲3%以上的日期。 輸出該股票所有開盤比前日收盤跌幅超過2%的日期。 假如我從2010年1月1日開始,每月第一個交易日買入1手股票,每年最後一個交易日賣出所有股票,到今天為止,我的收益如何? impo ...
  • 前言 明天就是擁抱情人節,情侶們會在公開的場合擁抱,向世人宣告你倆的愛意,也讓這個寒冷的冬天變得格外溫馨。到了年底依然能熱情擁抱,也見證了兩人情意如昔。 今天子川就給大家帶來就是的利用Python製作表白神器,記得發給自己的心儀對象。廢話不多說直接開整~ 開發工具 Python版本: 3.6 相關模 ...
  • 本文介紹如何使用 Pandas Profiling 的比較報告功能,分析兩個數據集的分佈差異,完成數據探索分析 (EDA) 的完整流程,為後續分析做準備。 ...
  • 作者:耿宗傑 前言 關於pprof的文章在網上已是汗牛充棟,卻是千篇一律的命令介紹,鮮有真正實操的,本文將參考Go社區資料,結合自己的經驗,實戰Go程式的性能分析與優化過程。 優化思路 首先說一下性能優化的一般思路。系統性能的分析優化,一定是從大到小的步驟來進行的,即從業務架構的優化,到系統架構的優 ...
  • 前言 網易雲的Vip音樂下載下來,格式不是mp3/flac這種通用的音樂格式,而是經過加密的ncm文件。只有用網易雲的音樂App才能夠打開。於是想到可不可以把.ncm文件轉換成mp3或者flac文件,上google查了一下,發現有不少人已經做了這件事,但沒有發現C語言版本的,就想著寫一個純C語言版本 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...