python神器pandas_Python数据处理神器,pandas入门必需理解的核心内容
在 Python 中做處理數(shù)據(jù),那么必須要使用 pandas ,否則你根本做不到'人生苦短,我學(xué)Python'。
最近發(fā)生了一件小事情,讓我意識(shí)到許多人沒有系統(tǒng)掌握 pandas 。我的一位同事在使用 pandas 處理一份數(shù)據(jù)時(shí),總是忘記應(yīng)該用 pandas 中的哪些方法做處理,每次都要到網(wǎng)上搜索一遍,而稍微復(fù)雜點(diǎn)的處理完全做不出來。
因此,本文介紹 pandas 的核心概念,每個(gè)概念配上形象的圖表,讓你深刻理解他們。日后你會(huì)發(fā)現(xiàn)這些概念會(huì)幫助你更快學(xué)會(huì)其他知識(shí)。
本文概要:
pandas 3大結(jié)構(gòu):DataFrame、Series、Index(MultiIndex)
在交互式環(huán)境下處理數(shù)據(jù)
就是一個(gè)表格
pandas 是以數(shù)據(jù)表格作為概念而做成的數(shù)據(jù)處理分析包,因此,通過表格形象去理解 pandas 是最適合不過的。
DataFrame
DataFrame 中文叫'數(shù)據(jù)幀',他以表格的形式來裝載數(shù)據(jù)。DataFrame 是處理數(shù)據(jù)的起點(diǎn)。 比如,有如下一份 csv 文件,內(nèi)容如下:
我們通過 pandas 把 csv 文件的數(shù)據(jù)加載為 DataFrame 。
import pandas as pd ,為了方便使用,一般習(xí)慣導(dǎo)入的時(shí)候,把 pandas 命名為 pd
pd.read_csv('data.csv') , 從 csv 加載數(shù)據(jù)到 DataFrame。其中有許多 pd.read_xxx 的方法,用于其他方式讀取數(shù)據(jù)。
我們來看看 DataFrame 是什么樣子的。
中間的區(qū)域叫 values ,因此我們可以通過 df.values 獲取這個(gè)值區(qū)域的數(shù)組。
平常處理數(shù)據(jù)的過程中,一般不需要把這個(gè)值區(qū)域讀取出來使用。下面會(huì)看到如何批量獲取一列或一行數(shù)據(jù)。
Series
Series 叫'系列',上圖從 DataFrame 輸出可以看到其就是一個(gè)表格形式。以此類推,那么 Series 就是表格中的一列。
如圖,這個(gè) DataFrame 有3列,也就是有3個(gè) Series 。
每個(gè) Series 都有一些信息,比如,名字、值。
那怎么獲取一列的數(shù)據(jù)?
通過 DataFrame['列名字'] 即可訪問指定列 。本文重點(diǎn)是說明 pandas 的結(jié)構(gòu),而非代碼實(shí)現(xiàn)。下一章會(huì)詳細(xì)說明怎樣高效靈活選擇數(shù)據(jù)。
Index
Index 中文叫'索引',許多人都對(duì) DataFrame 和 Series 很熟悉,但卻忽視了 Index。這是許多復(fù)雜處理的基礎(chǔ)。
細(xì)心的讀者可能會(huì)注意到,在之前我們看到的 DataFrame 輸出時(shí),最左邊竟然多出一列,csv 數(shù)據(jù)中根本沒有這一列數(shù)據(jù)。 如下:
這多出來的一列就是 Index 。
由于我們是直接從 csv 中加載數(shù)據(jù)進(jìn)來,而沒有指定任何的列作為 Index ,因此 pandas 會(huì)默認(rèn)生成從0開始的一段數(shù)值作為 Index 。
那么 Index 有啥作用? 之前在說道 Series 的時(shí)候,我們已經(jīng)知道通過列名,可以讓你方便獲取一列數(shù)據(jù)。 同樣地,Index 是為了讓你方便獲取一行數(shù)據(jù)。 如下:
df.loc[1,:] , 表示從 DataFrame 中獲取行索引值是1的那一行數(shù)據(jù)。
不要以為只有行索引噢,其實(shí)我們之前通過列名字獲取一列數(shù)據(jù),同樣是通過 Index 得到的。
看一下怎么通過行列索引定位一個(gè)數(shù)據(jù):
通過 loc[行索引 , 列索引] ,即可定位一個(gè)數(shù)據(jù)重點(diǎn):由于行和列索引都是 Index,因此我們只需要學(xué)會(huì)行索引的操作方式,那么同時(shí)就學(xué)會(huì)了列索引的操作方式。
可以設(shè)置指定的列作為索引:
通過 .set_index('名稱') ,讓'名稱'列作為 Index 。
df.loc['西瓜',:] 現(xiàn)在可以通過正常的索引訪問行數(shù)據(jù)
交互式環(huán)境
如果你用過 jupyter notebook ,那么相信你已經(jīng)非常熟悉交互式環(huán)境。下面我演示如何在 vs code 中使用 jupyter 那種單元格式的交互環(huán)境。這功能需要啟動(dòng) jupyter server,因此強(qiáng)烈建議你直接安裝 Anaconda 環(huán)境。直接去官方網(wǎng)站下載 exe ,安裝完成馬上就有完整的 Python 環(huán)境。
使用 #%% ,用于劃分每個(gè)單元格(cell)
我們可以單獨(dú)運(yùn)行任何一個(gè) cell 里面的代碼。
期間產(chǎn)生的變量都會(huì)一直保留。
在此環(huán)境下,你可以快速試驗(yàn)各種代碼,因?yàn)?python 進(jìn)程一直運(yùn)行著,你會(huì)發(fā)現(xiàn)這種方式比起一次次啟動(dòng) python 要快得多。如果你喜歡用 PyCharm ,那么這功能目前必需在專業(yè)版才可以使用。
總結(jié)
以上是生活随笔為你收集整理的python神器pandas_Python数据处理神器,pandas入门必需理解的核心内容的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: u盘点击右键无删除怎么办 如何解决U盘右
- 下一篇: python使用elasticsearc