數(shù)據(jù)分析 預(yù)處理與簡(jiǎn)單的統(tǒng)計(jì)

Kin Lim Lee 分析了8個(gè)簡(jiǎn)單的預(yù)處理代碼凌停,一共涵蓋8個(gè)場(chǎng)景侮东,分別是:

刪除多列圈盔、更改數(shù)據(jù)類型、將分類變量轉(zhuǎn)換為數(shù)字變量悄雅、檢查缺失數(shù)據(jù)驱敲、刪除列中的字符串、刪除列中的空格宽闲、用字符串連接兩列(帶條件)众眨、轉(zhuǎn)換時(shí)間戳(從字符串到日期時(shí)間格式)

刪除多列

Delete multiple columns
Not all columns are useful for data analysis. Df.drop makes it easy to delete the columns you specify.

在進(jìn)行數(shù)據(jù)分析時(shí),并非所有的列都有用容诬,用df.drop可以方便地刪除你指定的列围辙。

def drop_multiple_col(col_names_list, df): 
       
    AIM    -> Drop multiple columns based on their column names 

    INPUT  -> List of column names, df

    OUTPUT -> updated df with dropped columns 
    ------
    
    df.drop(col_names_list, axis=1, inplace=True)
    return df

轉(zhuǎn)換數(shù)據(jù)類型

Convert data type
When the data set gets bigger, you need to convert the data type to save memory.

當(dāng)數(shù)據(jù)集變大時(shí),需要轉(zhuǎn)換數(shù)據(jù)類型來節(jié)省內(nèi)存放案。

def change_dtypes(col_int, col_float, df): 
       
    AIM    -> Changing dtypes to save memory

    INPUT  -> List of column names (int, float), df

    OUTPUT -> updated df with smaller memory  
    ------
    
    df[col_int] = df[col_int].astype( int32 )
    df[col_float] = df[col_float].astype( float32 )

將分類變量轉(zhuǎn)換為數(shù)值變量

Convert categorical variables to numeric variables
Some machine learning models require variables to be in numeric format. This requires first converting the categorical variable to a numeric variable. At the same time, you can also keep categorical variables for data visualization.

一些機(jī)器學(xué)習(xí)模型要求變量采用數(shù)值格式。這需要先將分類變量轉(zhuǎn)換為數(shù)值變量矫俺。同時(shí)吱殉,你也可以保留分類變量掸冤,以便進(jìn)行數(shù)據(jù)可視化。

def convert_cat2num(df):
    # Convert categorical variable to numerical variable
    num_encode = { col_1  : { YES :1,  NO :0},
                   col_2   : { WON :1,  LOSE :0,  DRAW :0}}  
    df.replace(num_encode, inplace=True)  

檢查缺失數(shù)據(jù)

Check for missing data
If you want to check the amount of missing data per column, using the following code is the fastest way. It allows you to better understand which columns are missing more data and determine how to proceed with the next step of data cleansing and analysis.

如果你要檢查每列缺失數(shù)據(jù)的數(shù)量友雳,使用下列代碼是最快的方法稿湿。可以讓你更好地了解哪些列缺失的數(shù)據(jù)更多押赊,從而確定怎么進(jìn)行下一步的數(shù)據(jù)清洗和分析操作饺藤。

def check_missing_data(df):
    # check for any missing data in the df (display in descending order)
    return df.isnull().sum().sort_values(ascending=False)

刪除列中的字符串

Delete strings in columns
Sometimes new characters or other strange symbols appear in the string column, which can be handled simply by using df[‘col_1’].replace Drop it.

有時(shí)候,會(huì)有新的字符或者其他奇怪的符號(hào)出現(xiàn)在字符串列中流礁,這可以使用df[‘col_1’].replace很簡(jiǎn)單地把它們處理掉涕俗。

def remove_col_str(df):
    # remove a portion of string in a dataframe column - col_1
    df[ col_1 ].replace(, , regex=True, inplace=True)

    # remove all the characters after &# (including &#) for column - col_1
    df[ col_1 ].replace(  &#.* , , regex=True, inplace=True)

刪除列中的空格

Delete spaces in columns
When data is confusing, anything can happen. There are often some spaces at the beginning of the string. The following code is very useful when deleting spaces at the beginning of a string in a column.

數(shù)據(jù)混亂的時(shí)候,什么情況都有可能發(fā)生神帅。字符串開頭經(jīng)常會(huì)有一些空格再姑。在刪除列中字符串開頭的空格時(shí),下面的代碼非常有用找御。

def remove_col_white_space(df):
    # remove white space at the beginning of string 
    df[col] = df[col].str.lstrip()

用字符串連接兩列(帶條件)

Connect two columns with strings (with condition)
This code is helpful when you want to conditionally join two columns together with a string. For example, you can set some letters at the end of the first column and then use them to connect to the second column.
As needed, the letters at the end can also be deleted after the connection is complete.

當(dāng)你想要有條件地用字符串將兩列連接在一起時(shí)元镀,這段代碼很有幫助。比如霎桅,你可以在第一列結(jié)尾處設(shè)定某些字母栖疑,然后用它們與第二列連接在一起。根據(jù)需要滔驶,結(jié)尾處的字母也可以在連接完成后刪除遇革。

def concat_col_str_condition(df):
    # concat 2 columns with strings if the last 3 letters of the first column are  pil
    mask = df[ col_1 ].str.endswith( pil , na=False)
    col_new = df[mask][ col_1 ] + df[mask][ col_2 ]
    col_new.replace( pil ,    , regex=True, inplace=True)  # replace the  pil  with emtpy space

轉(zhuǎn)換時(shí)間戳(從字符串到日期時(shí)間格式)

Conversion timestamp (from string to datetime format)
When processing time series data, we are likely to encounter timestamp columns in string format.
This means converting the string format to a datetime format (or other format specified according to our needs) for meaningful analysis of the data.

在處理時(shí)間序列數(shù)據(jù)時(shí),我們很可能會(huì)遇到字符串格式的時(shí)間戳列瓜浸。這意味著要將字符串格式轉(zhuǎn)換為日期時(shí)間格式(或者其他根據(jù)我們的需求指定的格式) 澳淑,以便對(duì)數(shù)據(jù)進(jìn)行有意義的分析。

def convert_str_datetime(df): 
       
    AIM    -> Convert datetime(String) to datetime(format we want)

    INPUT  -> df

    OUTPUT -> updated df with new datetime format 
    ------
    
    df.insert(loc=2, column= timestamp , value=pd.to_datetime(df.transdate, format= %Y-%m-%

一般在DataFrame中插佛,簡(jiǎn)易獲取統(tǒng)計(jì)信息的函數(shù):

df.count()          #非空元素計(jì)算
df.min()            #最小值
df.max()            #最大值
df.idxmin()         #最小值的位置杠巡,類似于R中的which.min函數(shù)
df.idxmax()         #最大值的位置,類似于R中的which.max函數(shù)
df.quantile(0.1)    #10%分位數(shù)
df.sum()            #求和
df.mean()           #均值
df.median()         #中位數(shù)
df.mode()           #眾數(shù)
df.var()            #方差
df.std()            #標(biāo)準(zhǔn)差
df.mad()            #平均絕對(duì)偏差
df.skew()           #偏度
df.kurt()           #峰度
df.describe()       #一次性輸出多個(gè)描述性統(tǒng)計(jì)指標(biāo)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末雇寇,一起剝皮案震驚了整個(gè)濱河市氢拥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锨侯,老刑警劉巖嫩海,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異囚痴,居然都是意外死亡叁怪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門深滚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奕谭,“玉大人涣觉,你說我怎么就攤上這事⊙” “怎么了官册?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)难捌。 經(jīng)常有香客問我膝宁,道長(zhǎng),這世上最難降的妖魔是什么根吁? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任员淫,我火速辦了婚禮,結(jié)果婚禮上婴栽,老公的妹妹穿的比我還像新娘满粗。我一直安慰自己,他們只是感情好愚争,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布映皆。 她就那樣靜靜地躺著,像睡著了一般轰枝。 火紅的嫁衣襯著肌膚如雪捅彻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天鞍陨,我揣著相機(jī)與錄音步淹,去河邊找鬼。 笑死诚撵,一個(gè)胖子當(dāng)著我的面吹牛缭裆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寿烟,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼澈驼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了筛武?” 一聲冷哼從身側(cè)響起缝其,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎徘六,沒想到半個(gè)月后内边,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡待锈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年漠其,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辉懒,死狀恐怖阳惹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情眶俩,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布快鱼,位于F島的核電站颠印,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏抹竹。R本人自食惡果不足惜线罕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窃判。 院中可真熱鬧钞楼,春花似錦、人聲如沸袄琳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唆樊。三九已至宛琅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逗旁,已是汗流浹背嘿辟。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留片效,地道東北人红伦。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像淀衣,于是被迫代替她去往敵國和親昙读。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容