pandas中的數據結構+數據查詢

pandas 數據結構

Series

  • Series是一種類似于一維數組的對象,它由一組數據(不同數據類型)以及一組與之相關的數據標簽(即索引)組成。

列表創建

  • 僅有數據列表即可產生最簡單的Series

    s1 = pd.Series([1,'a',5.2,7])
    '''左側為索引,右側是數據'''
    s1"""輸出如下"""
    0      1
    1      a
    2    5.2
    3      7
    dtype: object
    

    獲取索引

    '''獲取索引'''
    s1.index"""輸出如下"""
    RangeIndex(start=0, stop=4, step=1)
    

    獲取數據

    ''' 獲取數據'''
    s1.values"""輸出如下"""
    array([1, 'a', 5.2, 7], dtype=object)
    

創建標簽索引

  • 創建一個具有標簽索引的Series

    s2 = pd.Series([1, 'a', 5.2, 7], index=['d','b','a','c'])
    s2"""輸出如下"""
    d      1
    b      a
    a    5.2
    c      7
    dtype: object
    

    獲取索引:

    s2.index"""輸出如下"""
    Index(['d', 'b', 'a', 'c'], dtype='object')
    

字典創建

  • 使用Python字典創建Series

    sdata={'Ohio':35000,'Texas':72000,'Oregon':16000,'Utah':5000}
    s3=pd.Series(sdata)
    s3"""輸出如下"""
    Ohio      35000
    Texas     72000
    Oregon    16000
    Utah       5000
    dtype: int64
    

根據標簽索引查詢數據

  • 類似Python的字典dict

    s2"""輸出如下"""
    d      1
    b      a
    a    5.2
    c      7
    dtype: object
    
    s2['a']"""輸出如下"""
    5.2
    
    type(s2['a'])"""輸出如下"""
    float
    
    s2[['b','a']]"""輸出如下"""
    b      a
    a    5.2
    dtype: object
    
    type(s2[['b','a']])"""輸出如下"""
    pandas.core.series.Series
    

DataFrame

  • DataFrame是一個表格型的數據結構

    1. 每列可以是不同的值類型(數值、字符串、布爾值等)

    2. 既有行索引index,也有列索引columns

    3. 可以被看做由Series組成的字典

    創建dataframe最常用的方法,見02節讀取純文本文件、excel、mysql數據庫

多個字典創建

  • 根據多個字典序列創建dataframe

    data={'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],'year':[2000,2001,2002,2001,2002],'pop':[1.5,1.7,3.6,2.4,2.9]}
    df = pd.DataFrame(data)
    df
    

    202107131oNCq4

    每一列的數據類型

    # 每一列的數據類型
    df.dtypes"""輸出如下"""
    state     object
    year       int64
    pop      float64
    dtype: object
    

    查看所有的列名

    # 查看所有的列名(特征名稱、或者理解為列的索引)
    df.columns
    """輸出如下"""
    Index(['state', 'year', 'pop'], dtype='object')
    

    查看行索引

    # 查看行索引
    df.index
    """輸出如下"""
    RangeIndex(start=0, stop=5, step=1
    

從DataFrame中查詢出Series

  • 從DataFrame中查詢出Series

    1. 如果只查詢一行、一列,返回的是pd.Series
    2. 如果查詢多行、多列,返回的是pd.DataFrame
    df
    

    202107131oNCq4

查詢多列

  • 查詢多列,結果是一個pd.DataFrame

    df[['year', 'pop']]
    """輸出如下"""
    

    type(df[['year', 'pop']])"""輸出如下"""
    pandas.core.frame.DataFram
    

查詢一行

  • 查詢一行,結果是一個pd.Series

    df.loc[1]"""輸出如下"""
    state    Ohio
    year     2001
    pop       1.7
    Name: 1, dtype: object  
    
    type(df.loc[1])"""輸出如下"""
    pandas.core.series.Series
    

查詢多行

  • 查詢多行,結果是一個pd.DataFrame

    查詢第2-4行

    df.loc[1:3]"""輸出如下"""
    

    20210817M95b2E

    type(df.loc[1:3])"""輸出如下"""
    pandas.core.frame.DataFrame
    

三、Pandas查詢數據

  • Pandas查詢數據的幾種方法

    1. `df.loc`方法,根據行、列的標簽值查詢
    2. `df.iloc`方法,根據行、列的數字位置查詢
    3. `df.where`方法
    4. `df.query`方法
    

    .loc既能查詢,又能覆蓋寫入,強烈推薦!

  • Pandas使用df.loc查詢數據的方法

    1. 使用單個label值查詢數據
    2. 使用值列表批量查詢
    3. 使用數值區間進行范圍查詢
    4. 使用條件表達式查詢
    5. 調用函數查詢
  • 注意

    1. 以上查詢方法,既適用于行,也適用于列
    2. 注意觀察降維dataFrame>Series>值
    print(pd.__version__)1.1.5
    

讀取數據

  • 數據為北京2018年全年天氣預報

    df = pd.read_csv("./datas/beijing_tianqi/beijing_tianqi_2018.csv")
    df.head()
    

    20210812O5Rokc

    設定索引為日期

    # 設定索引為日期,方便按日期篩選
    df.set_index('ymd', inplace=True)
    
    # 時間序列見后續,本次按字符串處理
    df.index"""輸出如下"""
    Index(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05','2018-01-06', '2018-01-07', '2018-01-08', '2018-01-09', '2018-01-10',...'2018-12-22', '2018-12-23', '2018-12-24', '2018-12-25', '2018-12-26','2018-12-27', '2018-12-28', '2018-12-29', '2018-12-30', '2018-12-31'],dtype='object', name='ymd', length=365)
    

    替換掉溫度的后綴

    # 替換掉溫度的后綴℃
    df.loc[:,'bWendu'] = df['bWendu'].str.replace('℃',"").astype('int32')
    df.loc[:,'yWendu'] = df['yWendu'].str.replace('℃',"").astype('int32')df.dtypes"""輸出如下"""
    bWendu        int32
    yWendu        int32
    tianqi       object
    fengxiang    object
    fengli       object
    aqi           int64
    aqiInfo      object
    aqiLevel      int64
    dtype: object
    
    df.head()
    """輸出如下"""
    

    20210812CGL2RA

查詢數據

單個label

  • 使用單個label值查詢數據

  • ? 行或者列,都可以只傳入單個值,實現精確匹配

    得到單個值 (2018年1月3日的最高溫度)

    # 得到單個值 (2018年1月3日的最高溫度)
    df.loc['2018-01-03', 'bWendu']"""輸出如下"""
    2
    

    得到一個Series(2018年1月3日的最高溫度和最低溫度)

    # 得到一個Series(2018年1月3日的最高溫度和最低溫度)
    df.loc['2018-01-03',['bWendu','yWendu']]"""輸出如下"""
    bWendu     2
    yWendu    -5
    Name: 2018-01-03, dtype: object
    

批量查詢

  • 使用值列表批量查詢

    得到Series:18年1月3,4,5日的最高溫度

    # 得到Series
    df.loc[['2018-01-03','2018-01-04','2018-01-05'], 'bWendu']"""輸出如下"""
    ymd
    2018-01-03    2
    2018-01-04    0
    2018-01-05    3
    Name: bWendu, dtype: int32
    

    得到DataFrame:18年1月3,4,5日的最高溫度和最低溫度

    # 得到DataFrame
    df.loc[['2018-01-03','2018-01-04','2018-01-05'], ['bWendu', 'yWendu']]"""輸出如下"""
    

    image-20210812170718191

范圍查詢

  • 使用數值區間進行范圍查詢

    注意:區間既包含開始,也包含結束

    行index按區間 (2018年1月3日至5號的最高溫度和最低溫度)

    # 行index按區間 (2018年1月3日至5號的最高溫度和最低溫度)(series)
    df.loc['2018-01-03':'2018-01-05', 'bWendu']"""輸出如下"""
    ymd
    2018-01-03    2
    2018-01-04    0
    2018-01-05    3
    Name: bWendu, dtype: int32
    

    列index按區間

    # 列index按區間(series)
    df.loc['2018-01-03', 'bWendu':'fengxiang']"""輸出如下"""
    bWendu        2
    yWendu       -5
    tianqi       多云
    fengxiang    北風
    Name: 2018-01-03, dtype: object
    

    行和列都按區間查詢

    # 行和列都按區間查詢(DataFrame)
    df.loc['2018-01-03':'2018-01-05', 'bWendu':'fengxiang']"""輸出如下"""

    202108126XPzAB

使用條件表達式查詢

  • bool列表的長度得等于行數或者列數
簡單條件查詢
  • 簡單條件查詢,最低溫度低于-10度的列表

    df.loc[df['yWendu']<-10,:]"""輸出如下"""
    

    20210812jDOl8U

    觀察一下這里的boolean條件

    # 觀察一下這里的boolean條件
    df['yWendu']<-10"""輸出如下"""ymd
    2018-01-01    False
    2018-01-02    False
    2018-01-03    False
    2018-01-04    False
    2018-01-05    False...  
    2018-12-27     True
    2018-12-28     True
    2018-12-29     True
    2018-12-30     True
    2018-12-31    False
    Name: yWendu, Length: 365, dtype: bool
    
復雜條件查詢
  • 復雜條件查詢,查一下完美天氣

    注意,組合條件用&符號合并,每個條件判斷都得帶括號

    查詢最高溫度小于30度,并且最低溫度大于15度,并且是晴天,并且天氣為優的數據

    ## 查詢最高溫度小于30度,并且最低溫度大于15度,并且是晴天,并且天氣為優的數據
    df.loc[(df['bWendu']<=30) & (df['yWendu']>15)&(df["tianqi"]=='晴') & (df["aqiLevel"]==1),:]"""輸出如下"""
    

    20210812hoALwx

    再次觀察這里的boolean條件

    # 再次觀察這里的boolean條件
    (df['bWendu']<=30) & (df['yWendu']>15)&(df["tianqi"]=='晴') & (df["aqiLevel"]==1)"""輸出如下"""
    ymd
    2018-01-01    False
    2018-01-02    False
    2018-01-03    False
    2018-01-04    False
    2018-01-05    False...  
    2018-12-27    False
    2018-12-28    False
    2018-12-29    False
    2018-12-30    False
    2018-12-31    False
    Length: 365, dtype: bool
    

調用函數查詢

lambda表達式
  • 直接寫lambda表達式

    # 直接寫lambda表達式
    df.loc[lambda df : (df["bWendu"]<=30) & (df["yWendu"]>=15), :]"""輸出如下"""
    

    20210812LyQT5B

編寫函數
  • 自己編寫函數

    # 編寫自己的函數,查詢9月份,空氣質量好的數據
    def query_my_data(df):return df.index.str.startswith("2018-9") & (df["aqiLevel"]==1)df.loc[query_my_data, :]"""輸出如下"""
    

    20210812JOKx3h


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70870.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70870.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70870.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用前端 html css 和js 開發一個AI智能平臺官網模板-前端靜態頁面項目

最近 AI 人工智能這么火&#xff0c;那必須針對AI 做一個 AI方面的 官方靜態網站練手。讓自己的前端技術更上一層樓&#xff0c;哈哈。 隨著人工智能技術的不斷發展&#xff0c;越來越多的AI應用開始滲透到各行各業&#xff0c;為不同領域的用戶提供智能化解決方案。本網站致力…

React + TypeScript 數據模型驅動數據字典生成示例

React TypeScript 數據模型驅動數據字典生成示例 引言&#xff1a;數據字典的工程價值 在現代化全棧開發中&#xff0c;數據字典作為業務實體與數據存儲的映射橋梁&#xff0c;直接影響系統可維護性與團隊協作效率。傳統手動維護字典的方式存在同步成本高和版本管理混亂兩大痛…

MySQL八股整理

1. 如何定位慢查詢&#xff1f; 慢查詢一般發生在聯表查詢或者表中數據量較大時&#xff0c;當響應時間較長或者壓測時間超過2s時&#xff0c;就認為是慢查詢。定位慢查詢的話一般有兩種方法&#xff0c;一種是使用專門的分析工具去定位。另一種也是我們項目中之前使用過的方法…

ShardingSphere Proxy 配置

在使用 ShardingSphere Proxy 模式時&#xff0c;結合 主從復制架構 實現 讀寫分離&#xff0c;并按照 用戶ID哈希算法 確定庫、時間范圍 確定表的場景下&#xff0c;配置文件需要做一些調整以支持分片、讀寫分離以及主從復制。 以下是如何配置 ShardingSphere Proxy 模式的詳…

Redis集群機制及一個Redis架構演進實例

Replication&#xff08;主從復制&#xff09; Redis的replication機制允許slave從master那里通過網絡傳輸拷貝到完整的數據備份&#xff0c;從而達到主從機制。為了實現主從復制&#xff0c;我們準備三個redis服務&#xff0c;依次命名為master&#xff0c;slave1&#xff0c;…

Qt QScrollArea 總結

Qt QScrollArea 總結 1. 功能概述 滾動容器&#xff1a;用于顯示超出視口&#xff08;Viewport&#xff09;范圍的內容&#xff0c;自動提供滾動條。子部件管理&#xff1a;可包裹單個子部件&#xff08;通過 setWidget()&#xff09;&#xff0c;當子部件尺寸 > 視口時&a…

Windows系統編程項目(一)進程管理器

本項目將通過MFC實現一個進程管理器&#xff0c;如下圖詳細信息頁所示&#xff1a; 一.首先創建一個基于對話框的MFC項目&#xff0c;在靜態庫中使用MFC 二.在項目默認的對話框中添加一個列表 三.列表添加變量 四.初始化列表 1.設置列表風格和表頭 2.填充列表內容 我們需要在…

RAG-202502

目錄 RAG場景的坑知識等級金字塔 初級RAG存在的問題高級RAG索前優化檢索優化檢索后優化 優化經驗總結參考 RAG場景的坑 晦澀的專業術語 誤區&#xff1a;在專業領域中。許多文獻和資料中充滿了專業術語&#xff0c;這些術語對于非專業人士&#xff08;甚至是大模型&#xff0…

CDN與群聯云防護的技術差異在哪?

CDN&#xff08;內容分發網絡&#xff09;與群聯云防護是兩種常用于提升網站性能和安全的解決方案&#xff0c;但兩者的核心目標和技術實現存在顯著差異。本文將從防御機制、技術架構、適用場景和代碼實現等方面詳細對比兩者的區別&#xff0c;并提供可直接運行的代碼示例。 一…

STM32-智能小車項目

項目框圖 ST-link接線 實物圖&#xff1a; 正面&#xff1a; 反面&#xff1a; 相關內容 使用L9110S電機模塊 電機驅動模塊L9110S詳解 | 良許嵌入式 測速模塊 語音模塊SU-03T 網站&#xff1a;智能公元/AI產品零代碼平臺 一、讓小車動起來 新建文件夾智能小車項目 在里面…

【Linux】vim 設置

【Linux】vim 設置 零、起因 剛學Linux&#xff0c;有時候會重裝Linux系統&#xff0c;然后默認的vi不太好用&#xff0c;需要進行一些設置&#xff0c;本文簡述如何配置一個好用的vim。 壹、軟件安裝 sudo apt-get install vim貳、配置路徑 對所有用戶生效&#xff1a; …

【Python爬蟲(90)】以Python爬蟲為眼,洞察金融科技監管風云

【Python爬蟲】專欄簡介&#xff1a;本專欄是 Python 爬蟲領域的集大成之作&#xff0c;共 100 章節。從 Python 基礎語法、爬蟲入門知識講起&#xff0c;深入探討反爬蟲、多線程、分布式等進階技術。以大量實例為支撐&#xff0c;覆蓋網頁、圖片、音頻等各類數據爬取&#xff…

【java進階】java多態深入探討

前言 在Java的編程宇宙中,多態是極為關鍵的概念,它宛如一條靈動的紐帶,串聯起面向對象編程的諸多特性,賦予程序宛如生命般的動態活力與高度靈活性。透徹理解多態,不僅是提升代碼質量的關鍵,更是開啟高效編程大門的鑰匙。 一、多態的定義與本質 多態,從概念層面來講,…

17164字符遷移

17164字符遷移 ??難度&#xff1a;中等 &#x1f4d6; &#x1f4da; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int q scanner.nextInt();scanner.next…

強化學習概覽

強化學習的目標 智能體&#xff08;Agent&#xff09;通過與環境&#xff08;Environment&#xff09;交互&#xff0c;學習最大化累積獎勵&#xff08;Cumulative Reward&#xff09;?的策略。 數學抽象 馬爾科夫決策過程&#xff08;MDP&#xff09; 收益 由于馬爾科夫決…

IDEA關閉SpringBoot程序后仍然占用端口的排查與解決

IDEA關閉SpringBoot程序后仍然占用端口的排查與解決 問題描述 在使用 IntelliJ IDEA 開發 Spring Boot 應用時&#xff0c;有時即使關閉了應用&#xff0c;程序仍然占用端口&#xff08;例如&#xff1a;4001 端口&#xff09;。這會導致重新啟動應用時出現端口被占用的錯誤&a…

QT:QPen、QBrush、與圖形抗鋸齒的關聯

QPen QPen 是 Qt 框架中用于定義繪圖時使用的畫筆屬性的類。在使用 QPainter 進行 2D 繪圖時&#xff0c;QPen 可以控制線條的外觀&#xff0c;比如線條的顏色、寬度、樣式&#xff08;如實線、虛線等&#xff09;、端點樣式&#xff08;如方形端點、圓形端點等&#xff09;和…

論文筆記(七十二)Reward Centering(三)

Reward Centering&#xff08;三&#xff09; 文章概括摘要3 基于值的獎勵中心化4 案例研究&#xff1a; 以獎勵為中心的 Q-learning5 討論、局限性與未來工作致謝 文章概括 引用&#xff1a; article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan…

單例模式——c++

一個類&#xff0c;只能有1個對象 (對象在堆空間) 再次創建該對象&#xff0c;直接引用之前的對象 so構造函數不能隨意調用 so構造函數私有 so對象不能構造 如何調用私有化的構造函數: 公開接口調用構造函數 調用構造函數&#xff1a;singleTon instance&#xff1b; 但…

ReentrantLock 底層實現

一、核心概念 1 - CAS CAS&#xff08;Compare-And-Swap&#xff0c;比較并交換&#xff09;操作是一種無鎖的原子操作&#xff0c;它在多線程環境下能夠保證線程安全&#xff0c;主要是通過硬件級別的原子性以及樂觀鎖的思想來實現的。以下詳細介紹 CAS 操作保證線程安全的原…