pandas 控制檢測與處理

2021-09-24 18:50:53 字數 2478 閱讀 3619

import pandas as pd

import numpy as np

# 缺失值檢測

# 載入資料

# data = pd.read_excel('qs.xlsx')

# print(data)

# 利用isnull進行空值判斷 -->返回bool df ,如果為true, 就是空值,如果為false,就是真實值

# print(data.isnull())

# 與sum連用,統計每一列空值個數

# print(data.isnull().sum())

# 利用notnull進行空值判斷 -->返回bool df ,如果為true, 就是真實值,如果為false,就是空值

# print(data.notnull())

# 與sum連用,統計每一列真實值個數

# print(data.notnull().sum())

# 缺失值處理

# 刪除法

# axis = 0 ,刪除行

# any 只要行裡面有空值,就刪除整行

# inplace = true 替換原文本

# all 只有整行整列資料全為空值就刪除

# data.dropna(axis=0,how='any',inplace=true)

# print(data)

# 刪除法 --》存在na就刪除----》對資料影響較大(慎用)

# 如果某一行或者某一列資料存在大量的缺失值,這個時候就可以使用刪除法刪除

# 填充法

# 使用fillna進行填充,需要制定填充的內容,inplace是否覆蓋原來資料

# 注意填充的數值型資料,可以使用均值,眾數,中位數進行填充

# 類別型資料需要使用眾數進行填充

# data['門店編號'].fillna('cdnl', inplace=true)

# print(data)

# 填充值必須為單個數值,不可以為序列,眾數不唯一,取下標獲取單個眾數

# data['類別id'].fillna(data['類別id'].mode()[0], inplace=true)

# print(data)

# 填充法應用

# 例如:**中只有少量資料為缺失狀態,就可以使用填充法,填充的時候需要注意,填充的結果不能對後續的分析產生不利的影響

# 插值法

# 線性插值法、多項式插值、樣條插值

# 線性插值 --》擬合線性方程進行差值

# 多項式差值 --》通過擬合多項式進行差值,通常使用拉格朗日插值,牛頓插值

# 樣條插值

# 匯入我們的插值模組

from scipy.interpolate import interp1d # 線性插值模組

from scipy.interpolate import lagrange # 拉格朗日插值模組

from scipy.interpolate import spline # 樣條插值模組

x = np.array([1, 2, 3, 4, 5, 8, 9])

y1 = np.array([3, 5, 7, 9, 11, 17, 19])

y2 = np.array([2, 8, 18, 32, 50, 128, 162])

# 線性插值

# linear1 = interp1d(x, y1, kind='linear')

# linear2 = interp1d(x, y2, kind='linear')

# print(linear1([6, 7])) #y1缺失值[13. 15.] --》[13, 15]

# print(linear2([6, 7])) #y2 缺失值[ 76. 102.] -->[76, 98]

# 拉格朗日插值模組

# la1 = lagrange(x=x, w=y1)

# la2 = lagrange(x=x, w=y2)

# print(la1([6, 7])) # y1缺失值[13. 15.] --》[13, 15]

# print(la2([6, 7])) # y2 缺失值[ 76. 102.] -->[76, 98]

# 樣條插值

# print(spline(xk=x, yk=y1,xnew=[6,7])) # y1缺失值[13. 15.] --》[13, 15]

# print(spline(xk=x, yk=y2,xnew=[6,7])) # y2 缺失值[ 76. 102.] -->[76, 98]

# 多項式插值、樣條插值在非線性、線性裡面效果都不錯

# 線性關係在現實生活中並不多見,以後遇到的插值方式選擇多項式插值、樣條插值

# scipy也是一種科學計算庫

# nan -->float型別

# 遇到非np.nan 型別空值 可以替換為np.nan 在進行插值

# date = data.replace('*', np.nan)

pandas 高階處理 分組與聚合

分組與聚合通常是分析資料的一種方式,通常與一些統計函式一起使用,檢視資料的分組情況 想一想其實剛才的交叉表與透視表也有分組的功能,所以算是分組的一種形式,只不過他們主要是計算次數或者計算比例!看其中的效果 案例 不同顏色的不同筆的 資料 col pd.dataframe color object p...

pandas 時間處理

year month day 是 datetime 標準形式 可以用 datetime.dt.day 取到 day 如果是 datetime 相減,得到兩個時間差的天數,型別變為 timedelta 要用 dt.days 獲取天數 如果是一串數字表達的時間 沒有分隔符 可以用to datetime ...

pandas處理資料

pd.read csv path to file.txt header 0,names ab index 0 names columns這個可以不寫,制定索引列是第一列,這樣就沒有序號 np.tofile d python np.txt 類似於二維列表 充分利用map函式 df.a df.a.map...