1. 程式人生 > >四、Pandas小結(2)— 資料清洗 & 分箱操作

四、Pandas小結(2)— 資料清洗 & 分箱操作

#資料清洗

# 一、處理缺失資料
import pandas as pd

log_data = pd.read_csv('log.csv')
log_data

log_data.isnull()

log_data['paused'].isnull()

# 取出volume不為空的資料
log_data[log_data['volume'].notnull()]

log_data.set_index(['time', 'user'], inplace=True)
log_data.sort_index(inplace=True)
log_data

log_data.fillna(0)

log_data.dropna()

log_data.ffill()#按之前的資料填充

log_data.bfill() #按之後的資料填充

# 二、資料變形
# 1、處理重複資料
data = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],
                     'k2': [1, 1, 2, 3, 3, 4, 4]})
data


#判斷資料是否重複
data.duplicated()

#去除重複資料
data.drop_duplicates()

data['v1'] = range(7)
data

#去除指定列的重複資料
data.drop_duplicates(['k1'])

data.drop_duplicates(['k1', 'k2'], keep='last')

# 2、使用函式或map轉化資料
data = pd.DataFrame({'food': ['bacon', 'pulled pork', 'bacon', 'Pastrami', 'corned beef', 'Bacon', 'pastrami', 'honey ham', 'nova lox'],
                     'ounces': [4, 3, 12, 6, 7.5, 8, 3, 5, 6]})
data

# 新增一列,用於指定食物的來源
meat_to_animal = {
    'bacon': 'pig',
    'pulled pork': 'pig',
    'pastrami': 'cow',
    'corned beef': 'cow',
    'honey ham': 'pig',
    'nova lox': 'salmon'
}
data

#使用map()
lowercased = data['food'].str.lower()
data['food'].str.lower()
data['animal'] = lowercased.map(meat_to_animal)
data

#使用方法
data['animal2'] = data['food'].map(lambda x : meat_to_animal[x.lower()])
data

# 3、替換值
data = pd.Series([1., -999., 2., -999., -1000., 3.])
data

import numpy as np

#將-999,-1000都替換為空值
data.replace([-999,-1000], np.nan)

data.replace({-999: np.nan, -1000:0})

# 4、離散化和分箱操作
#年齡資料
ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]

# 分箱的邊界
bins = [18, 25, 35, 60, 100]

cats = pd.cut(ages, bins)
print(type(cats))

# Categorical物件
cats

#獲取分箱編碼
cats.codes

#返回分箱便捷索引
cats.categories

#統計箱中元素的個數
pd.value_counts(cats)

#帶標籤的分箱
group_names = ['Youth', 'YoungAdult', 'MiddleAged', 'Senior']
cats = pd.cut(ages, bins, labels = group_names)
cats
cats.get_values()

# 5、 啞變數操作
df = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'b'], 
                   'data1': range(6)})
df

pd.get_dummies(df['key'])

# 5.向量化字串操作

data = {'Dave': '
[email protected]
', 'Steve': '[email protected]', 'Rob': '[email protected]', 'Wes': np.nan}
data = pd.Series(data)
data

#字串列元素中是否包含子字串
data.str.contains('gmail')

#字串列切片操作
data.str[:5]

split_df = data.str.split('@', expand=True)
split_df

split_df = data.str.split('@')
split_df

split_df[0].str.cat(split_df[1], sep='@')

相關推薦

Pandas小結2資料清洗 & 操作

#資料清洗# 一、處理缺失資料import pandas as pdlog_data = pd.read_csv('log.csv')log_datalog_data.isnull()log_data['paused'].isnull()# 取出volume不為空的資料log

Pandas小結3資料合併及分組

#資料合併及分組# 一、資料合併import pandas as pdstaff_df = pd.DataFrame([{'姓名': '張三', '部門': '研發部'},                        {'姓名': '李四', '部門': '財務部'}, 

【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架做專案2建立資料庫和資料模型

索引 簡述 我們建立一個數據庫然後生成資料模型,新增ADO.NET實體資料模型,這裡呢常用的有兩種方式,一種是DbFirst,一種是CodeFirst,為了簡便,我們使用DbFirst。有基礎的朋友可以使用CodeFirst,對專案沒有影響的。 專案準備 我們用的工具是:VS 2013 + Sql

Matlab矩陣處理小結2-讀資料求均值和中位數 繪製errorbar圖

files = dir('*.log'); for  i=1:length(files)     File =files(i).name;     a=importdata(File);     b=reshape(a,6,12)';%calculate tramsport

Pandas學習筆記2資料的處理方法

準備工作 建立一個6X4的DataFrame,行索引為時間序列,列索引為字母 dates = pd.date_range('20180205',periods=6) df = pd.DataFrame(np.arange(24).reshape((6,4))

小白學 Python 資料分析6Pandas 基礎操作2資料選擇

人生苦短,我用 Python 前文傳送門: 小白學 Python 資料分析(1):資料分析基礎 小白學 Python 資料分析(2):Pandas (一)概述 小白學 Python 資料分析(3):Pandas (二)資料結構 Series 小白學 Python 資料分析(4):Pandas (三)資

軟件工程綜合實踐階段小結2

img 視圖 view app web-inf hand ont info base 這兩天,在企業導師的指導下,我們基於springmvc+mybatis+spring再次建立了之前的網站(但沒有連接數據庫)。 可以發現,結構比之前簡單了許多,事實上代碼量也小了很多

畫一個皮卡丘項目小結2

弧度 order 設置 簡寫形式 tps tom 傾斜 red 居中 前言 繼續總結過程中學到的新知識,這是第2部分。 一 畫一個傾斜的 弧度 .upperLip{ width: 80px; /*設置上嘴唇的寬高*/ height: 20

多線程小結2

new 技術分享 pan read inf string show interrupt 主線程 0 .查看當前的線程信息:Thread.CurrentThread.屬性 1 private static Thread subthread ; 2 p

每日小結2

tool for dir provided .org ever fail tps grep 中文輸入法無法在 QtCreator(Linux) 中輸入漢字 環境 system: Deepin 15.7 Qt Creator 4.7.0 (GCC 5.3.1) 解決方法

2018 年下半年全國大學英語六級考試CET考生須知

開考科目及時間  2018 年下半年全國大學英語四、六級考試(以下簡稱“CET”)筆試時間為 12 月 15 日。   2018 年下半年筆試開考科目為英語四級(以下簡稱為“CET4”),英語六級(以下簡稱為“CET6”)。  各科目時間安排: 日期 (12 月 15 日) 考試種類 考試程式

線程進程2----- 從計算機物理層面分析

height 示例 電路 14. 模塊 物理層 就是 最大線程數 運行 一、從計算機的發展說起: ① 真空管與穿孔卡片 輸入一個指令,輸出一個結果 ② 晶體管和批處理系統 攢成一大波輸入(批處理指令),然後順序計算 ③ 集成電路芯片和多道程序設計 開發出多道程序設

《人類簡史》十開啟未來——智人的滅亡

在之前,我們看到了人類的能力不斷的增強,主宰了地球上所有物種的我們已經是萬物之靈了,我們的強大已經無限的逼近於上帝。不過呢我們距離成為真正的上帝仍然感覺還是有一步之遙。上帝創造了高山流水和無數奇妙、精美的生命,人類憑藉強大的能力可以奴役他們、塑造他們甚至是毀滅他們,但是人類在這10萬年間

服務消費Ribbon

1、Spring Cloud Ribbon Spring Cloud Ribbon是基於Netflix Ribbon實現的一套客戶端負載均衡的工具。它是一個基於HTTP和TCP的客戶端負載均衡器。它可以通過在客戶端中配置ribbonServerList來設定服務端列表去輪詢訪問以達到均衡負載的作用。 當R

作業系統第章學習筆記 2儲存器管理 連續分配儲存管理方式

連續分配方式:為一個使用者程式分配一個連續的記憶體空間 :單一連續分配                 記憶體分為系統區和使用者區兩部分:        

章 儲存器管理2

** 基本分頁儲存管理 ** 1.頁面的概念 記憶體劃分成多個小單元,每個單元K大小,稱(物理)塊。 作業也按K單位大小劃分成片,稱為頁面。 ①物理劃分塊的大小 = 邏輯劃分的頁的大小 ②頁面大小要適中 太大,(最後一頁)內碎片增大,類似連續分配的問題。 太小的話,頁面碎片總空間

資料結構之圖篇2:圖的基本操作 深度和廣度遍歷

程式碼實現 main.cpp(主函式) #include <iostream> #include "CMap.h" using namespace std; /** 圖的的儲存:鄰接矩陣 圖的遍歷:深度+廣度 A / \

資料預處理2資料整合 和 資料變換 資料規約

資料整合 資料探勘的過程中往往需要的資料分佈在不同的資料庫,資料整合就是將多個數據源合併存放在一個一致的資料儲存(如資料倉庫)中的過程。 實體識別 同名異義 名字相同但實際代表的含義不同 異名同義 名字不同但代表的意思相同 單位不統一 冗餘屬性識別

資料探索2資料特徵分析

資料特徵分析 分佈分析 1.定量資料的分佈分析 對於定量變數而言,選擇組數和組寬是做頻率分佈分析時最主要的問題,一般按照以下步驟進行。 1)求極差 2)決定組距和組數 3)決定分店 4)列出頻率分佈表 5)繪製頻率分佈直方圖 遵循以下原則: 1)各組之間必須相互排斥 2)各組

Esper學習筆記:EPL語法2

1.select 查詢所有屬性或特定屬性 EPL的select和SQL的select很相近,SQL用*表示查詢表的所有欄位,而EPL用*表示查詢事件流的所有屬性值。SQL查詢某個欄位名,直接在select後跟欄位名就ok,EPL也是將要查詢的屬性名放在select之後。若查多個屬