小編給大家分享一下pandas數(shù)據(jù)分析常用函數(shù)有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站托管維護(hù)等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出成都創(chuàng)新互聯(lián)。1. 導(dǎo)入模塊
import pandas as pd # 這里用到的是pandas和numpy兩個(gè)模塊
import numpy as np
2. 創(chuàng)建數(shù)據(jù)集并讀取
2.1 創(chuàng)建數(shù)據(jù)集
我構(gòu)造了一個(gè)超市購物的數(shù)據(jù)集,該數(shù)據(jù)集屬性包括:訂單ID號(hào)(id)、訂單日期(date)、消費(fèi)金額(money)、訂單商品(product)、商品類別(department)、商品產(chǎn)地(origin)。
# 列表和字典均可傳入DataFrame,我這里用的是字典傳入:
data=pd.DataFrame({
"id":np.arange(101,111), # np.arange會(huì)自動(dòng)輸出范圍內(nèi)的數(shù)據(jù),這里會(huì)輸出101~110的id號(hào)。
"date":pd.date_range(start="20200310",periods=10), # 輸出日期數(shù)據(jù),設(shè)置周期為10,注意這里的周期數(shù)應(yīng)該與數(shù)據(jù)條數(shù)相等。
"money":[5,4,65,-10,15,20,35,16,6,20], # 設(shè)置一個(gè)-10的坑,下面會(huì)填(好慘,自己給自己挖坑,幸虧不準(zhǔn)備跳~)
"product":['蘇打水','可樂','牛肉干','老干媽','菠蘿','冰激凌','洗面奶','洋蔥','牙膏','薯片'],
"department":['飲料','飲料','零食','調(diào)味品','水果',np.nan,'日用品','蔬菜','日用品','零食'], # 再設(shè)置一個(gè)空值的坑
"origin":['China',' China','America','China','Thailand','China','america','China','China','Japan'] # 再再設(shè)置一個(gè)america的坑
})
data # 輸出查看數(shù)據(jù)集
輸出結(jié)果:
2.2 數(shù)據(jù)寫入和讀取
data.to_csv("shopping.csv",index=False) # index=False表示不加索引,否則會(huì)多一行索引
data=pd.read_csv("shopping.csv")
3. 數(shù)據(jù)查看
3.1 數(shù)據(jù)集基礎(chǔ)信息查詢
data.shape # 行數(shù)列數(shù)
data.dtypes # 所有列的數(shù)據(jù)類型
data['id'].dtype # 某一列的數(shù)據(jù)類型
data.ndim # 數(shù)據(jù)維度
data.index # 行索引
data.columns # 列索引
data.values # 對象值
3.2 數(shù)據(jù)集整體情況查詢
data.head() # 顯示頭部幾行(默認(rèn)5行)
data.tail() # 顯示末尾幾行(默認(rèn)5行)
data.info() # 數(shù)據(jù)集相關(guān)信息概覽:索引情況、列數(shù)據(jù)類型、非空值、內(nèi)存使用情況
data.describe() # 快速綜合統(tǒng)計(jì)結(jié)果
4. 數(shù)據(jù)清洗
4.1 查看異常值
當(dāng)然,現(xiàn)在這個(gè)數(shù)據(jù)集很小,可以直觀地發(fā)現(xiàn)異常值,但是在數(shù)據(jù)集很大的時(shí)候,我用下面這種方式查看數(shù)據(jù)集中是否存在異常值,如果有其他更好的方法,歡迎傳授給我。
for i in data:
print(i+": "+str(data[i].unique())) # 查看某一列的唯一值
輸出結(jié)果:我們發(fā)現(xiàn),該數(shù)據(jù)集中money存在一個(gè)負(fù)值,department存在一個(gè)空值以及origin存在大小寫問題。
4.2 空值處理
4.2.1 空值檢測
data.isnull()# 查看整個(gè)數(shù)據(jù)集的空值data['department'].isnull()# 查看某一列的空值
data.isnull() # 查看整個(gè)數(shù)據(jù)集的空值
data['department'].isnull() # 查看某一列的空值
輸出結(jié)果:
將空值判斷進(jìn)行匯總,更加直觀,ascending默認(rèn)為True,升序。
data.isnull().sum().sort_values(ascending=False)
輸出結(jié)果:
4.2.2 空值處理
pandas.DataFrame.fillna(value = None,method = None,inplace = False)
value:用于填充的值,可以是具體值、字典和數(shù)組,不能是列表;
method:填充方法,有 ffill 和 bfill 等;
inplace默認(rèn)無False,如果為True,則將修改此對象上的所有其他視圖。
data['department'].fillna(method="ffill") # 填充上一個(gè)值,即填充“水果”
輸出結(jié)果:
data['department'].fillna(method="bfill") # 填充下一個(gè)值,即填充“日用品”
data['department'].fillna(value="冷凍食品",inplace=True) # 替換為具體值,并且在原對象值上進(jìn)行修改
輸出結(jié)果:
4.3 空格處理
只針對object類型數(shù)據(jù)
for i in data: # 遍歷數(shù)據(jù)集中的每一列
if pd.api.types.is_object_dtype(data[i]): # 如果是object類型的數(shù)據(jù),則執(zhí)行下方代碼
data[i]=data[i].str.strip() # 去除空格
data['origin'].unique() # 驗(yàn)證一下
輸出結(jié)果:array([‘China’, ‘America’, ‘Thailand’, ‘a(chǎn)merica’, ‘Japan’], dtype=object)
4.4 大小寫轉(zhuǎn)換
data['origin'].str.title() # 將首字母大寫
data['origin'].str.capitalize() # 將首字母大寫
data['origin'].str.upper() # 全部大寫
data['origin'].str.lower() # 全部小寫
4.5 數(shù)據(jù)替換
data['origin'].replace("america","America",inplace=True) # 將第一個(gè)值替換為第二個(gè)值,inplace默認(rèn)為False
data['origin']
輸出結(jié)果:
data['money'].replace(-10,np.nan,inplace=True) # 將負(fù)值替換為空值
data['money'].replace(np.nan,data['money'].mean(),inplace=True) # 將空值替換為均值
data['money']
輸出結(jié)果:
4.6 數(shù)據(jù)刪除
方法一
data1 = data[data.origin != 'American'] #去掉origin為American的行
data1
data2=data[(data != 'Japan').all(1)] #去掉所有包含Japan的行 不等于Japan的行為真,則返回
data2
方法二
data['origin'].drop_duplicates() # 默認(rèn)刪除后面出現(xiàn)的重復(fù)值,即保留第一次出現(xiàn)的重復(fù)值
輸出結(jié)果:
data['origin'].drop_duplicates(keep='last') # 刪除前面出現(xiàn)的重復(fù)值,即保留最后一次出現(xiàn)的重復(fù)值
輸出結(jié)果:
更多關(guān)于pandas.DataFrame.drop_duplicates的用法,戳下面官方鏈接:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html#pandas.DataFrame.drop_duplicates
4.7 數(shù)據(jù)格式轉(zhuǎn)換
data['id'].astype('str') # 將id列的類型轉(zhuǎn)換為字符串類型。
常見的數(shù)據(jù)類型對照
4.8 更改列名稱
data.rename(columns={'id':'ID', 'origin':'產(chǎn)地'}) # 將id列改為ID,將origin改為產(chǎn)地。
輸出結(jié)果:
以上是“pandas數(shù)據(jù)分析常用函數(shù)有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!