《Python3爬蟲、數(shù)據(jù)清洗和可視化實戰(zhàn)》
零一 韓要賓 黃園園 著
第九章:pandas數(shù)據(jù)清理
9.1 數(shù)據(jù)讀寫、選擇、整理和描述
Pandas是用來數(shù)據(jù)清洗的Python庫,由于它的依賴庫很多,所以建議還是下載anaconda,里面內(nèi)置了相關(guān)庫。
9.1.1 讀取CSV數(shù)據(jù)
df = pd.read_csv(“csv_path”,delimiter=”,”,encoding=””)
參數(shù)說明:
“csv_path”,CSV文件路徑;delimiter=”,”:分隔方式;encoding=””:文件編碼格式。
9.1.2 向CSV寫入數(shù)據(jù)
df.to_csv(“csv_path”,columns=[‘value1’,’value2’],index=False,header=True)
參數(shù)說明:
“csv_path”文件路徑,columns=[‘value1’,’value2’]:需要寫入的數(shù)據(jù),index=False:將DataFrame保存成文件,并忽略索引信息(True為默認(rèn)值,保存索引信息),header=True
查看表中的描述性統(tǒng)計信息
df.describe()
9.2 數(shù)據(jù)分組,分割,合并和變形
9.2.1數(shù)據(jù)分組
Groupby:
Means = df[“成交量”].groupby(df[“成交量”],df[“賣家”]).mean()
>>>Means
size方法:返回一個含有各個分組大小的Series
9.2.2數(shù)據(jù)分割
df1=df[30:40][[‘位置’,’賣家’]]
#df1中包含第30-39行數(shù)據(jù)
9.2.3數(shù)據(jù)合并
Pandas包含三種內(nèi)置的合并數(shù)據(jù)集方法:
Pandas.merge | 根據(jù)一個或多個鍵將多個DataFrame連接起來 |
---|---|
Pandas.concat | 可以沿著一個軸將多個對象堆疊起來 |
Combine_first | 可以將重疊部分合并,用以填充缺失部分 |
Pandas.merge(df1,df2,on=” Column_name”,how=”inner/outer/left”,left_index=True,right_index=true)
參數(shù)說明:
On:合并相同列名的列,默認(rèn)會選擇相同列名。
How:包含inner(內(nèi)連接),outer(外連接),left(左連接),right(右連接)
內(nèi)連接 | 兩個表中相同數(shù)據(jù)合并輸出 |
---|---|
外連接 | 兩個表中全部數(shù)據(jù)合并輸出 |
左連接 | 以左邊表(df1)為基礎(chǔ),添加df1中沒有的行屬性(從df2中找新數(shù)據(jù)) |
左連接 | 以右邊表(df2)為基礎(chǔ),添加df2中沒有的行屬性(從df1中找新數(shù)據(jù)) |
left_index:將左邊表(df1)索引作為連接鍵
right_index:將右邊表(df2)索引作為連接鍵(df1.join(df2):join方法同樣可以將索引作為連接鍵使用)
Pandas.concat([s1,s2,s3])
#沿著s1,s2,s3的軸合并在一起
9.2.4 數(shù)據(jù)變形
Data.stack()方法:將Data的列轉(zhuǎn)換為行
Data.unstack()方法:將Data的行轉(zhuǎn)換為列
9.3 缺失值、異常值和重復(fù)值處理
9.3.1 缺失值處理
查看缺失值:
df1.isnull()
刪除行:
df1.dropna()
代替缺失值:
df1.fillna(“代替值”)
df1.fillna(method=”pad/bfill”,limit=1)
#pad使用前一個同屬性的數(shù)據(jù)代替空值;fill使用后一個同屬性的數(shù)據(jù)代替空值;limit表示每列代替空值的數(shù)目
9.3.3 移除重復(fù)值
判斷是否存在重復(fù)值:
df1.duplicated()
刪除重復(fù)數(shù)據(jù):
df1.drop_duplicates()
9.4 時序數(shù)據(jù)處理
9.4.1 日期/時間數(shù)據(jù)轉(zhuǎn)換
import time
>>>Time.time() #輸出系統(tǒng)時間戳
>>>time.localtime() #輸出系統(tǒng)時間
>>>time.mktime(time.localtime()) #將系統(tǒng)時間轉(zhuǎn)化為時間戳
9.4.2 時序數(shù)據(jù)基礎(chǔ)操作
import datetime
import numpy as np
import pandas as pd
#periods表示輸出幾天(從2019-05-17開始計算);freq表示按照什么單位生成序列(M/D/H:月/天/小時)
Pd.date_range(“2019-05-17”,periods=31,freq=”M/D/H”)
(
"Life's a mixed bag, no matter who you are."--《About Time》
)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
