Python pandas進行數(shù)據(jù)預(yù)處理的實現(xiàn)
案例:電子商務(wù)客戶數(shù)據(jù)的預(yù)處理
本案例將通過使用pandas庫對電子商務(wù)客戶數(shù)據(jù)進行數(shù)據(jù)預(yù)處理。數(shù)據(jù)預(yù)處理是進行有效數(shù)據(jù)分析的重要步驟,目的是將數(shù)據(jù)處理為適合分析的狀態(tài)。本案例分為幾個步驟來逐步演示如何進行數(shù)據(jù)導入、查看數(shù)據(jù)集信息、處理缺失值、數(shù)據(jù)格式轉(zhuǎn)換、重復(fù)值刪除、數(shù)據(jù)標準化以及數(shù)據(jù)導出。
測試數(shù)據(jù)
以下是我們將要處理的測試數(shù)據(jù),以電子商務(wù)客戶訂單為例:
CustomerID | OrderDate | Product | Quantity | Price |
---|---|---|---|---|
C001 | 2024-01-10 | 智能手機 | 2 | 500.00 |
C002 | 2024-01-12 | 筆記本電腦 | 1 | 1200.00 |
C003 | NaN | 耳機 | 3 | 50.00 |
C001 | 2024-01-15 | 平板電腦 | 1 | 300.00 |
C004 | 2024-01-18 | 筆記本電腦 | 1 | 1200.00 |
C005 | 2024-01-20 | 智能手機 | 2 | NaN |
C001 | 2024-01-15 | 平板電腦 | 1 | 300.00 |
C006 | 2024-01-22 | 耳機 | 2 | 100.00 |
C007 | 2024-01-25 | 智能手表 | 1 | 200.00 |
C008 | 2024-01-28 | 平板電腦 | 3 | 900.00 |
C009 | 2024-01-30 | 筆記本電腦 | 1 | 1500.00 |
C010 | 2024-02-01 | 智能手機 | 4 | 2000.00 |
C011 | 2024-02-05 | 耳機 | 5 | 250.00 |
C012 | 2024-02-08 | 平板電腦 | 1 | 300.00 |
C013 | 2024-02-10 | 智能手表 | 2 | 400.00 |
C014 | 2024-02-12 | 筆記本電腦 | 2 | 2400.00 |
C015 | 2024-02-15 | 智能手機 | 1 | 1000.00 |
C016 | 2024-02-18 | 平板電腦 | 2 | 600.00 |
C017 | 2024-02-20 | 智能手表 | 3 | 600.00 |
C018 | 2024-02-22 | 耳機 | 1 | 50.00 |
C019 | 2024-02-25 | 智能手機 | 2 | 1200.00 |
C020 | 2024-02-28 | 筆記本電腦 | 1 | 1300.00 |
步驟1:數(shù)據(jù)導入
首先,使用pandas導入CSV文件并加載數(shù)據(jù)。
import pandas as pd # 導入CSV文件 df = pd.read_csv('ecommerce_customers.csv')
解析:首先導入pandas庫,pd.read_csv()
方法用于加載CSV文件,并將其存儲在名為df
的數(shù)據(jù)框中。
步驟2:查看數(shù)據(jù)集基本信息
使用pandas的各種方法來查看數(shù)據(jù)的結(jié)構(gòu)和內(nèi)容,以便對數(shù)據(jù)有初步的了解。
# 查看數(shù)據(jù)的前幾行 print(df.head()) # 查看數(shù)據(jù)類型和列信息 print(df.info()) # 數(shù)值列的簡單統(tǒng)計分析 print(df.describe())
解析:
df.head()
:查看數(shù)據(jù)的前幾行,幫助快速了解數(shù)據(jù)的基本結(jié)構(gòu)。
運行結(jié)果:
CustomerID OrderDate Product Quantity Price
0 C001 2024-01-10 智能手機 2 500.0
1 C002 2024-01-12 筆記本電腦 1 1200.0
2 C003 NaN 耳機 3 50.0
3 C001 2024-01-15 平板電腦 1 300.0
4 C004 2024-01-18 筆記本電腦 1 1200.0
通過head()
方法,我們可以快速查看數(shù)據(jù)的前5行,了解數(shù)據(jù)的大致內(nèi)容。
df.info()
:顯示數(shù)據(jù)集的列、非空值數(shù)量和數(shù)據(jù)類型,幫助了解數(shù)據(jù)集的整體情況。
運行結(jié)果:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20 entries, 0 to 19
Data columns (total 5 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 CustomerID 20 non-null object
1 OrderDate 19 non-null object
2 Product 20 non-null object
3 Quantity 20 non-null int64
4 Price 19 non-null float64
dtypes: float64(1), int64(1), object(3)
memory usage: 928.0+ bytes
通過info()
方法,我們可以看到數(shù)據(jù)集中每一列的名稱、數(shù)據(jù)類型,以及非空值的數(shù)量,這對于后續(xù)判斷是否有缺失值非常有幫助。
df.describe()
:對數(shù)值列進行統(tǒng)計分析,提供如均值、標準差等信息。
運行結(jié)果:
Quantity Price
count 20.000000 19.000000
mean 2.000000 810.526316
std 1.055597 714.053229
min 1.000000 50.000000
25% 1.000000 300.000000
50% 2.000000 1000.000000
75% 3.000000 1200.000000
max 5.000000 2400.000000
通過describe()
方法,我們可以看到數(shù)值列(如Quantity
和Price
)的統(tǒng)計信息,如均值、中位數(shù)、標準差等,這對于數(shù)據(jù)的分布和特征分析非常重要。
`count` 表示數(shù)據(jù)集中非空值的數(shù)量。對于 `Quantity` 列,所有 20 個值都是非空的;而對于 `Price` 列,只有 19 個非空值,說明有一個缺失值。
`mean` 表示列的平均值。`Quantity` 列的平均購買量是 2;`Price` 列的平均價格是 810.53。步驟3:處理缺失值。
`min` 表示列中的最小值。`Quantity` 列的最小購買量是 1;`Price` 列的最低價格是 50。
`25%` 表示第一四分位數(shù),即 25% 的數(shù)據(jù)點小于或等于這個值。對于 `Quantity` 列,第一四分位數(shù)是 1;對于 `Price` 列,這個值是 300。
`50%` 表示中位數(shù),即 50% 的數(shù)據(jù)點小于或等于這個值。`Quantity` 列的中位數(shù)為 2;`Price` 列的中位數(shù)為 1000。
`75%` 表示第三四分位數(shù),即 75% 的數(shù)據(jù)點小于或等于這個值。`Quantity` 列的第三四分位數(shù)是 3;`Price` 列的第三四分位數(shù)是 1200。
`max` 表示列中的最大值。`Quantity` 列的最大購買量是 5;`Price` 列的最高價格是 2400。
處理數(shù)據(jù)中的缺失值。在本案例中,OrderDate
和Price
列中存在缺失值。
# 查看缺失值 def missing_values(df): return df.isnull().sum() print(missing_values(df)) # 填充缺失的價格列,以平均值替代 df['Price'].fillna(df['Price'].mean(), inplace=True) # 填充缺失的訂單日期,以特定日期替代 df['OrderDate'].fillna('2024-01-01', inplace=True)
解析:
df.isnull().sum()
:統(tǒng)計每一列的缺失值數(shù)量,幫助識別數(shù)據(jù)中的空缺項。df['Price'].fillna(df['Price'].mean(), inplace=True)
:使用均值填充Price
列的缺失值,確保數(shù)據(jù)的完整性。inplace=True 是一個參數(shù),用于指定操作是否在原數(shù)據(jù)框上進行修改。設(shè)置 inplace=True 后,操作會直接對原數(shù)據(jù)框進行更改,而不會返回一個新的數(shù)據(jù)框。這有助于節(jié)省內(nèi)存,但需要謹慎使用,因為數(shù)據(jù)的修改是不可逆的。df['OrderDate'].fillna('2024-01-01', inplace=True)
:將OrderDate
列的缺失值填充為默認日期2024-01-01
。
步驟4:數(shù)據(jù)格式轉(zhuǎn)換
將OrderDate
列從字符串轉(zhuǎn)換為日期類型,以便后續(xù)進行時間序列分析。
# 將OrderDate轉(zhuǎn)換為日期類型 df['OrderDate'] = pd.to_datetime(df['OrderDate'])
解析:pd.to_datetime(df['OrderDate'])
將OrderDate
列轉(zhuǎn)換為日期時間格式,這樣可以方便后續(xù)的日期相關(guān)分析,例如排序或時間序列分析。
步驟5:處理重復(fù)值
查找并刪除數(shù)據(jù)集中的重復(fù)值,以保證數(shù)據(jù)的準確性。
# 查找重復(fù)的行 duplicates = df[df.duplicated()] print(duplicates) # 刪除重復(fù)的行 df.drop_duplicates(inplace=True)
解析:
df.duplicated()
:標記數(shù)據(jù)集中重復(fù)的行。df.drop_duplicates(inplace=True)
:刪除所有重復(fù)的行,確保數(shù)據(jù)集不包含重復(fù)記錄,從而提高分析結(jié)果的準確性。
步驟6:數(shù)據(jù)標準化
對Price
列進行標準化,以便后續(xù)的分析和建模。
from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() df['Price'] = scaler.fit_transform(df[['Price']])
解析:
- 導入
MinMaxScaler
用于對數(shù)據(jù)進行縮放。 scaler.fit_transform(df[['Price']])
將Price
列的值縮放到0到1之間,標準化后的數(shù)據(jù)更適合用于機器學習模型。
步驟7:保存預(yù)處理后的數(shù)據(jù)
最后,將預(yù)處理后的數(shù)據(jù)保存為一個新的CSV文件,以供后續(xù)分析使用。
# 導出為新文件 df.to_csv('ecommerce_customers_cleaned.csv', index=False)
解析:df.to_csv()
方法將處理過的數(shù)據(jù)保存為新的CSV文件,index=False
表示不保存索引列。
總結(jié)
通過上述步驟,我們已經(jīng)對電子商務(wù)客戶數(shù)據(jù)集進行了數(shù)據(jù)預(yù)處理,涵蓋了數(shù)據(jù)的導入、查看、缺失值處理、數(shù)據(jù)格式轉(zhuǎn)換、重復(fù)值刪除、數(shù)據(jù)標準化以及數(shù)據(jù)導出。通過這個案例,學生可以理解數(shù)據(jù)預(yù)處理的關(guān)鍵步驟和技巧,為后續(xù)的數(shù)據(jù)分析和建模做好準備。
到此這篇關(guān)于Python pandas進行數(shù)據(jù)預(yù)處理的實現(xiàn)的文章就介紹到這了,更多相關(guān)pandas數(shù)據(jù)預(yù)處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實現(xiàn)照片集變成視頻的代碼實現(xiàn)
看著電腦里亂七八糟的照片,有大有小,寬高不一,突然想找個方式把他們統(tǒng)一起來,然后做成視頻更好,所以本文給大家介紹了python實現(xiàn)照片集變成視頻的實現(xiàn),需要的朋友可以參考下2024-10-10python用線性回歸預(yù)測股票價格的實現(xiàn)代碼
這篇文章主要介紹了python用線性回歸預(yù)測股票價格的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09利用pyuic5將ui文件轉(zhuǎn)換為py文件的方法
今天小編就為大家分享一篇利用pyuic5將ui文件轉(zhuǎn)換為py文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06