1. 程式人生 > >pandas 中DataFrame使用:資料標準化、資料分組、日期轉換、日期格式化、日期抽取

pandas 中DataFrame使用:資料標準化、資料分組、日期轉換、日期格式化、日期抽取

1資料標準化

將資料按比例縮放,使之落入到特定區間,一般我們使用0-1標準化。公式如下:

X∗=x−minmax−minX∗=x−minmax−min

#導包
import pandas;
from pandas import read_csv

df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data13.csv")

scale=(df.score-df.score.min())/(df.score.max()-df.score.min())

資料計算前後對比 
這裡寫圖片描述

這裡寫圖片描述

2 資料分組

根據資料分析物件的特徵,按照一定數值指標,把資料分析物件劃分為不同的區間部分來進行研究,以揭示其內在的聯絡和規律性。這裡我們可以使用cut函式,cut(series,bins,right=True,labels=NULL),其中:

series:需要分組的資料

bins:分組的劃分陣列

right:分組的時候,右邊是否閉合

labels:分組的自定義標籤,可以不自定義

#導包
import pandas;
from pandas import read_csv

df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data14.csv",sep="|")

bins=[min(df.cost)-1,20,40,60,80,100,max(df.cost)+1]

labels=['20以下','20到40','40到60','60到80','80到100','100以上']

result=pandas.cut(df.cost,bins=bins,right=False,labels=labels)

資料處理前後對比:

這裡寫圖片描述

這裡寫圖片描述

將對應的資料進行了標註。

3 日期轉換

將字元型的日期格式的資料,轉換成日期型資料的過程,使用date=to_datetime(dateString,format)

屬性 註釋
%Y 代表年份
%m 代表月份
%d 代表日期
%H 代表小時
%M 代表分鐘
%S 代表秒
#導包
from pandas import read_csv
from pandas import to_datetime

df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data15.csv",encoding='utf8')

df_dt=to_datetime(df.註冊時間,format="%Y/%m/%d")

資料處理前後對照

這裡寫圖片描述

這裡寫圖片描述

4日期格式化

將日期型的資料,按照給定的格式,轉為字元型的資料。日期格式化函式:apply(lambda x:處理邏輯),datetime.strftime(x,format) ,這裡的format與時間轉化相同。

#導包
from pandas import read_csv
from pandas import to_datetime
from datetime import datetime

df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data16.csv",encoding='utf8')

df_dt=to_datetime(df.註冊時間,format="%Y/%m/%d")

df_dt_str=df_dt.apply(lambda x: datetime.strftime(x,"%d-%m-%Y"))

時間轉換前後對比

這裡寫圖片描述

5日期抽取

從日期格式裡,抽取出需要的部分屬性。使用的發函數:datetime列.dt.property

屬性 註釋
second 1-60:秒,從1開始,到60
minute 1-60:分鐘,從1開始,到60
hour 1-24:小時,從1開始,到24
day 1-31:一個月中的第幾天,從1開始,最大31
month 1-12:月份,從1開始,到12
year 年份
weekday 1-7:一週中的第幾天,從1開始,最大為7
#導包
from pandas import read_csv
from pandas import to_datetime

df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data17.csv",encoding='utf8')

df_dt=to_datetime(df.註冊時間,format="%Y/%m/%d")

s_y=df_dt.dt.year
s_s=df_dt.dt.second
s_m=df_dt.dt.minute
s_h=df_dt.dt.hour
s_d=df_dt.dt.day
s_M=df_dt.dt.month
s_w=df_dt.dt.weekday

原始資料,轉換資料對比

這裡寫圖片描述

這裡寫圖片描述