Python pandas庫自學(xué)超詳細(xì)教程
一、什么是Pandas庫
(1)、Pandas 應(yīng)用
Pandas 可以從各種文件格式比如 CSV、JSON、SQL、Excel 導(dǎo)入數(shù)據(jù)。
Pandas 可以對(duì)各種數(shù)據(jù)進(jìn)行運(yùn)算操作,比如歸并、再成形、選擇,還有數(shù)據(jù)清洗和數(shù)據(jù)加工特征。
Pandas 廣泛應(yīng)用在學(xué)術(shù)、金融、統(tǒng)計(jì)學(xué)等各個(gè)數(shù)據(jù)分析領(lǐng)域。
(2)、Pandas 功能
Pandas 是數(shù)據(jù)分析的利器,它不僅提供了高效、靈活的數(shù)據(jù)結(jié)構(gòu),還能幫助你以極低的成本完成復(fù)雜的數(shù)據(jù)操作和分析任務(wù)。
Pandas 提供了豐富的功能,包括:
- 數(shù)據(jù)清洗:處理缺失數(shù)據(jù)、重復(fù)數(shù)據(jù)等。
- 數(shù)據(jù)轉(zhuǎn)換:改變數(shù)據(jù)的形狀、結(jié)構(gòu)或格式。
- 數(shù)據(jù)分析:進(jìn)行統(tǒng)計(jì)分析、聚合、分組等。
- 數(shù)據(jù)可視化:通過整合 Matplotlib 和 Seaborn 等庫,可以進(jìn)行數(shù)據(jù)可視化。
(3)、數(shù)據(jù)結(jié)構(gòu)
Pandas 的主要數(shù)據(jù)結(jié)構(gòu)是 Series (一維數(shù)據(jù))與 DataFrame(二維數(shù)據(jù))。
Series 是一種類似于一維數(shù)組的對(duì)象,它由一組數(shù)據(jù)(各種 Numpy 數(shù)據(jù)類型)以及一組與之相關(guān)的數(shù)據(jù)標(biāo)簽(即索引)組成。
DataFrame 是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu),它含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 組成的字典(共同用一個(gè)索引)。
二、安裝pandas庫
(1)、在終端中運(yùn)行
pip install pandas
(2)、導(dǎo)入Pandas庫并重命名為pd
import pandas as pd # 查看pandas版本 print(pd.__version__)
輸出: 2.2.3
三、操作教學(xué)
1.基礎(chǔ)操作
我想存儲(chǔ)一些人的信息和對(duì)應(yīng)的數(shù)據(jù)
import pandas as pd
df = pd.DataFrame(
{
"Name": ["Alice", "Bob", "Charlie"],
"Age": [25, 30, 35],
"City": ["New York", "Los Angeles", "Chicago"]
}
)
print(df)打印的結(jié)果:

DataFrame是一個(gè)二維數(shù)據(jù)結(jié)構(gòu),可以存儲(chǔ) 不同類型的 (包括字符、整數(shù)、浮點(diǎn)值、 分類數(shù)據(jù)等)。它類似于電子表格,每一行都有自己的列標(biāo)簽和值
2.拿取指定列的數(shù)據(jù)
print(df['City'])
打印的結(jié)果:

3.從頭開始創(chuàng)建DataFrame
a = pd.Series(["黑色", "紅色", "白色"], name="color") print(a)
打印的結(jié)果:

4.DataFrame的統(tǒng)計(jì)數(shù)據(jù)
df = pd.DataFrame(
{
"Name": ["Alice", "Bob", "Charlie"],
"Age": [25, 30, 35],
"City": ["New York", "Los Angeles", "Chicago"]
}
)
print(df.describe())結(jié)果為:

5.分析csv文件中的數(shù)據(jù)
csv文件內(nèi)容如下:
TABLE_SCHEMA | TABLE_NAME | ENGINE | VERSION | DATA_LENGTH | CREATE_TIME |
information_schema | CHARACTER_SETS | MEMORY | 10 | 0 | 2025/3/10 10:04 |
information_schema | COLLATIONS | MEMORY | 10 | 0 | 2025/3/10 10:04 |
information_schema | COLUMNS | InnoDB | 10 | 16384 |
|
information_schema | COLUMN_PRIVILEGES | MEMORY | 10 | 0 | 2025/3/10 10:04 |
information_schema | ENGINES | MEMORY | 10 | 0 | 2025/3/10 10:04 |
information_schema | EVENTS | InnoDB | 10 | 16384 |
|
information_schema | FILES | MEMORY | 10 | 0 | 2025/3/10 10:04 |
information_schema | GLOBAL_STATUS | MEMORY | 10 | 0 | 2025/3/10 10:04 |
information_schema | GLOBAL_VARIABLES | MEMORY | 10 | 0 | 2025/3/10 10:04 |
information_schema | KEY_COLUMN_USAGE | MEMORY | 10 | 0 | 2025/3/10 10:04 |
只讀取數(shù)據(jù)
df = pd.read_csv("C:/Users/65742/Desktop/tables.csv")
print(df)結(jié)果為:

只想看前幾行的數(shù)據(jù)
df = pd.read_csv("C:/Users/65742/Desktop/tables.csv")
print(df.head(8))結(jié)果為:

分析每列的數(shù)據(jù)類型
df = pd.read_csv("C:/Users/65742/Desktop/tables.csv")
print(df.dtypes)結(jié)果為:

讀取更加詳細(xì)的數(shù)據(jù)
df = pd.read_csv("C:/Users/65742/Desktop/tables.csv")
print(df.info)結(jié)果為:

6.excel表格的操作
與csv同理,讀取方法換成read_excel()這個(gè)就可以了
import xlrd
df = pd.read_excel("C:/Users/65742/Desktop/tables.xls")
print(df)注意: read_excel()需要依賴xlrd模塊,所以需要安裝xlrd。
7.選擇需要的列
df = pd.read_csv("C:/Users/65742/Desktop/tables.csv")
print(df['TABLE_NAME'])結(jié)果為:

需要選擇多個(gè)列直接使用逗號(hào)拼接在中括號(hào)里面就OK了
df = pd.read_csv("C:/Users/65742/Desktop/tables.csv")
print(df[['TABLE_NAME', 'CREATE_TIME']])結(jié)果為:

查看返回?cái)?shù)據(jù)的行數(shù)以及列數(shù)
df = pd.read_csv("C:/Users/65742/Desktop/tables.csv")
print(df[['TABLE_NAME']].shape)結(jié)果為:

請注意,返回的數(shù)據(jù)包括行數(shù)和列數(shù)
篩選固定條件的數(shù)據(jù)
above_0 = df[df["DATA_LENGTH"] > 0] print(above_0)
結(jié)果為:

如果你想檢查數(shù)據(jù)是否大于某個(gè)值:
print(df["DATA_LENGTH"] > 0)
結(jié)果為:

查詢某個(gè)列中的多個(gè)值的數(shù)據(jù)
engine_select = df[df["ENGINE"].isin(['InnoDB', 'MEMORY'])] print(engine_select)
df[]中放置的是列名,isin中放的是感興趣的數(shù)據(jù)
結(jié)果為:

組合多個(gè)條件查詢
new_result = df[(df["ENGINE"] == 'InnoDB') | (df["TABLE_NAME"] == 'FILES')] print(new_result)
結(jié)果為:

如果想驗(yàn)證列中的數(shù)據(jù)是不是空值
create_time_not_na = df[df["CREATE_TIME"].notna()] print(create_time_not_na)
篩選出所有“CREATE_TIME”列不為缺失值(NaN)的行,并將結(jié)果存儲(chǔ)在一個(gè)新的 DataFrame 變量
結(jié)果為:

查詢某列符合條件的數(shù)據(jù),并只取該行的數(shù)據(jù)某一列
table_names = df.loc[df["DATA_LENGTH"] > 0, "TABLE_NAME"] print(table_names)
結(jié)果為:

查詢特定行到特定行,特定列到特定列的數(shù)據(jù)
# 查詢第1到4行,第3到5列的數(shù)據(jù) print(df.iloc[0:4, 2:5])
結(jié)果為:

切記:
選擇數(shù)據(jù)子集時(shí),使用方括號(hào)。[]
在這些括號(hào)內(nèi),您可以使用單個(gè)列/行標(biāo)簽、列表 的列/行標(biāo)簽、標(biāo)簽切片、條件表達(dá)式或 一個(gè)冒號(hào)。
使用行時(shí)選擇特定行和/或列 和列名稱。loc
使用 在表中的位置。iloc
您可以根據(jù) / 為選擇分配新值。lociloc
8.增加列
df = pd.read_excel("C:/Users/65742/Desktop/tables.xls", sheet_name='tables')
print(df)
df["數(shù)據(jù)長度"] = df["DATA_LENGTH"]*100 # 增加一列
print(df)等號(hào)前面為你要新增加的列名,后面是原本存在的列名,執(zhí)行之后會(huì)幫我們新建一個(gè)列名“數(shù)據(jù)長度”。
結(jié)果為:

且等號(hào)后面的數(shù)據(jù)是可以和其他類的數(shù)據(jù)運(yùn)算或者直接運(yùn)算的
9.修改列名
df = pd.read_excel("C:/Users/65742/Desktop/tables.xls", sheet_name='tables')
print(df)
c = df.rename(columns={"TABLE_NAME": "表名"})
print(c)columns中鍵值對(duì)里面的key是原表格中的列,value是要替換的列名
結(jié)果為:

修改多個(gè)列的列名
c = df.rename(columns={"TABLE_NAME": "表名", "DATA_LENGTH": "數(shù)據(jù)長度"})
print(c)結(jié)果為:

10.對(duì)數(shù)據(jù)進(jìn)行分組并計(jì)算平均數(shù)
f = pd.DataFrame({
"name": ["吳昊", '趙括', "李月榮", "吳昊", "李月榮"],
"age": [28, 32, 35, 30, 36],
"gender": ["男", "女", "男", "男", "女"],
"score": [92, 85, 98, 88, 95]
})
print(f[["name","age","score"]].groupby("name").mean())結(jié)果為:

到此這篇關(guān)于Python pandas庫自學(xué)超詳細(xì)教程的文章就介紹到這了,更多相關(guān)Python pandas庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Python開發(fā)一個(gè)多線程IP網(wǎng)絡(luò)掃描工具
IP?Scanner?是一個(gè)基于?Python?開發(fā)的網(wǎng)絡(luò)掃描工具,它能夠快速掃描指定網(wǎng)段內(nèi)的活動(dòng)?IP?地址,下面小編就來和大家詳細(xì)介紹一下它的具體實(shí)現(xiàn)方法吧2025-05-05
Python實(shí)現(xiàn)GIF動(dòng)圖以及視頻卡通化詳解
本文主要介紹了如何使用Python中的animegan2-pytorch實(shí)現(xiàn)動(dòng)圖以及視頻的卡通化效果,文中的代碼具有一定的學(xué)習(xí)價(jià)值,需要的朋友可以參考一下2021-12-12
Python pandas 列轉(zhuǎn)行操作詳解(類似hive中explode方法)
這篇文章主要介紹了Python pandas 列轉(zhuǎn)行操作詳解(類似hive中explode方法),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05
vscode中配置jupyter的詳細(xì)步驟(徹底解決Failed?to?start?the?Kernel問題)
自從vscode出了支持jupyter?notebook的功能之后,我就再也沒有傻傻的用瀏覽器開過jupyter(問就是vscode好看),下面這篇文章主要給大家介紹了關(guān)于vscode中配置jupyter(徹底解決Failed?to?start?the?Kernel問題)的相關(guān)資料,需要的朋友可以參考下2022-12-12
Python中.py文件和.ipynb文件的區(qū)別詳解
Python開發(fā)者常用的兩種文件格式.py和.ipynb各有特點(diǎn),本教程將通過對(duì)比分析、代碼示例和場景說明,幫助開發(fā)者全面理解二者的區(qū)別與聯(lián)系,需要的朋友可以參考下2025-04-04
Python隨機(jī)數(shù)random模塊使用指南
本文給大家分享的是Python隨機(jī)數(shù)random模塊的幾個(gè)常用的方法,非常的簡單,小伙伴們喜歡的話,后續(xù)繼續(xù)深入探討2016-09-09

