目錄
一.數據導入導出
1.CSV文件讀取與參數說明
2.Excel與TST文件讀取
3.數據導出操作
二.缺失值處理
1.填充缺失值
2.刪除缺失值【刪除整行數據】
三.重復值處理
四.數據篩選與條件查詢
1.邏輯判斷+取數
2.字符匹配
3.邏輯運算: &(和)、|(或)
一.數據導入導出
Pandas支持多種數據格式,包括CSV、Excel(XLSX/XLS)、TST等
1.CSV文件讀取與參數說明
- 使用
read_csv()
方法讀取CSV文件,自動識別逗號分隔符。 - 參數
header
控制是否將第一行作為列名:header=None
表示無列名,第一行視為數據。
- 默認將第一行作為列名(如
name, age, income
)。import pandas as pddf_1 = pd.read_csv("data1.csv") print(df_1)name age income 0 lili 20 2000 1 peter 21 2300 2 jim 22 2200
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
2.Excel與TST文件讀取
- Excel文件通過
read_excel()
讀取,同樣支持header
參數。 - TST文件使用
read_table()
,需指定分隔符(sep
參數)和是否包含列名。df_1 = pd.read_excel("data3.xlsx")name age income 0 lili 20 2000 1 lucy 20 2300 2 peter 21 2400 3 kitty 22 2500 df_2 = pd.read_table("data4.txt",sep=',',header=None)0 1 2 0 lili 20 2000 1 peter 21 2300 2 jim 22 2200
3.數據導出操作
? ? ? ? ? ?導出CSV:to_csv()方法,參數包括:
? ? ? ? ? ?header=True(導出列名)。
? ? ? ? ? ?index=True(是否導出行索引)。
? ? ? ? ? ?導出Excel:to_excel()參數與CSV類似,僅格式不同。
import pandas as pddf_1 = pd.read_csv("data1.csv")
df_1.to_csv(r"導出的地址",index=True, header=True)
df_2 = pd.read_excel("data3.xlsx")
df_2.to_excel(r"導出的地址",index=True, header=True)
二.缺失值處理
缺失值處理方式:
1.數據補齊,填充缺失值 2.刪除對應數據行 3.不處理
- 缺失數據在Pandas中顯示為
NaN
(如未填寫的單元格)。 - 檢測缺失值:
isnull()
函數返回布爾類型DataFrame,標記空缺位置為True顯示如下
。import pandas as pd df = pd.read_csv(r"data.csv",encoding='gbk') na = df.isnull()
1.填充缺失值
使用 fillna()方法 填充缺失值
df1 = df.fillna('需要填充的值')
2.刪除缺失值【刪除整行數據】
df2 = df.dropna()
三.重復值處理
- 通過?
duplicated()
?檢測重復行,返回布爾值標識重復項(完全相同的行或指定列重復)。import pandas as pd df = pd.read_csv(r"data1.csv",encoding='gbk') result1 = df.duplicated()
- 根據列名(如?
name
?和?gender
)判斷重復性,結合布爾索引提取重復行數據。result2 = df.duplicated('gender')
result3 = df.duplicated(['gender', 'name'])
- 使用?
drop_duplicates()
?刪除重復行,需注意刪除后索引可能不連續,需手動調整。#刪除完全重復行 new_df1 = df.drop_duplicates()
#刪除部分重復【根據某列名來刪除】 new_df2 = df.drop_duplicates(['name', 'gender'])
四.數據篩選與條件查詢
1.邏輯判斷+取數
通過布爾條件(如 好評數 > 17000)篩選數據,生成 True/False 序列后提取對應行。
使用 between() 方法篩選數值范圍內的數據(如 好評數在15000到17000之間)。
import pandas as pddf = pd.read_csv(
r"data1.csv",encoding='gbk')#抽取好評數大于17000的電腦
df[df['好評數'] > 17000]
#抽取好評數在15000到17000之間的電腦
df[df['好評數'].between(15000, 17000)]
2.字符匹配
通過str.contains()
方法篩選包含特定字符(如“蘋果”)的內容
na=False
參數的作用(忽略缺失值)與na=True
的區別(將缺失值納入匹配結果)。
df[df['品牌'].str.contains('蘋果',na=False)]
3.邏輯運算: &(和)、|(或)
&:所有條件都滿足則返回True
| :滿足一個條件就返回True
df[(df['價格']<7000) & (df['好評數'] > 16000)]
df[(df['價格']<6000) | (df['好評數']>18000)]
五.matplotlib庫 簡單圖繪制
?1.繪制點線圖:
通過plt.plot(x, y)
傳入X/Y軸數據,設置顏色(color
)和標記形狀(marker
),添加標題(title
)和軸標簽(xlabel/ylabel
)。
import matplotlib.pyplot as plt
import numpy as np
x=np.array([1,2,3,4,5])
y=np.array([10,20,30,40,50])
plt.plot(x,y,color='red',marker='o')#點線圖
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.show()
2.直方圖:
使用plt.hist()
繪制單值條形圖
data = [1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 5]
plt.hist(data,color='red')
plt.show()
3.多子圖繪制
通過plt.subplot()
在同一畫布上分區域繪制多個圖形(如正弦、余弦函數),結合np.linspace()
生成等間隔數據點。
使用 plt.subplot 創建兩行兩列的子圖(共4個),圖像大小為10x8(單位未明確)。
- 子圖通過矩陣(
ndarray
)管理,通過索引(如?ax[0,0]
)在指定位置添加數據:- 第0行第0列:繪制?
X
?和?y1
(紅色),標題為?X sinex
。 - 第0行第1列:繪制?
X
?和?y2
(綠色),標題為?cosinex
。 - 第1行第0列:繪制?
X
?和?y3
(藍色)。
- 第0行第0列:繪制?
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,100)
y1=np.sin(x)
y2=np.cos(x)
y3=np.tan(x)
y4=np.sin(x**2)
fig,axs=plt.subplots(2,2,figsize=(10,8))
axs[0,0].plot(x,y1,'r')
axs[0,0].set_title('sin(x)')
axs[0,1].plot(x,y2,'g')
axs[0,1].set_title('cos(x)')
axs[1,0].plot(x,y3,'b')
axs[1,0].set_title('tan(x)')
axs[1,1].plot(x,y4,'m')
axs[1,1].set_title('sin(x^2)')
plt.show()