中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas數據分析實用小技巧有哪些

發布時間:2021-11-30 14:20:28 來源:億速云 閱讀:164 作者:小新 欄目:大數據

這篇文章給大家分享的是有關Pandas數據分析實用小技巧有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

小技巧1:如何使用map對某些列做特征工程?

先生成數據:

d = {"gender":["male", "female", "male","female"],"color":["red", "green", "blue","green"],"age":[25, 30, 15, 32]
}df = pd.DataFrame(d)df

Pandas數據分析實用小技巧有哪些

在 gender列上,使用 map 方法,快速完成如下映射:

d = {"male": 0, "female": 1}
df["gender2"] = df["gender"].map(d)

Pandas 數據分析 5 個實用小技巧

小技巧2:使用 replace 和正則清洗數據

Pandas 的強項在于數據分析,自然就少不了數據清洗。

一個快速清洗數據的小技巧,在某列上使用 replace 方法和正則,快速完成值的清洗。

源數據:

d = {"customer": ["A", "B", "C", "D"],"sales":[1100, "950.5RMB", "$400", " $1250.75"]}
df = pd.DataFrame(d)df

打印結果:

customer sales
0 A 11001 B 950.5RMB
2 C $4003 D $1250.75

看到 sales 列的值,有整型,浮點型+RMB后變為字符串型,還有美元+整型,美元+浮點型。

我們的目標:清洗掉 RMB$符號,轉化這一列為浮點型。

一行代碼搞定:(點擊代碼區域,向右滑動,查看完整代碼)

df["sales"] = df["sales"].replace("[$,RMB]","", regex = True) \
.astype("float")

使用正則替換,將要替換的字符放到列表中 [$,RMB],替換為空字符,即""

最后使用 astype轉為 float

打印結果:

customer sales0 A 1100.001 B 950.502 C 400.003 D 1250.75

如果不放心,再檢查下值的類型:

df["sales"].apply(type)

打印結果:

0 <class 'float'>1 <class 'float'>2 <class 'float'>3 <class 'float'>

【python學習交流群】

小技巧3:使用 melt 如何對數據透視分析?

構造一個 DataFrame:

d = {\"district_code": [12345, 56789, 101112, 131415],"apple": [5.2, 2.4, 4.2, 3.6],"banana": [3.5, 1.9, 4.0, 2.3],"orange": [8.0, 7.5, 6.4, 3.9]}df = pd.DataFrame(d)df

打印結果:

district_code apple banana orange0123455.23.58.01567892.41.97.521011124.24.06.431314153.62.33.9

5.2 表示 12345 區域的 apple 價格,并且 apple, banana, orange,這三列都是一種水果,那么如何把這三列合并為一列?

使用 pd.melt

具體參數取值,根據此例去推敲:

df = df.melt(\
id_vars = "district_code",
var_name = "fruit_name",
value_name = "price")
df

打印結果:

district_code fruit_name price012345 apple 5.2156789 apple 2.42101112 apple 4.23131415 apple 3.6412345 banana 3.5556789 banana 1.96101112 banana 4.07131415 banana 2.3812345 orange 8.0956789 orange 7.510101112 orange 6.411131415 orange 3.9

以上就是長 DataFrame,對應的原 DataFrame 是寬 DF.

小技巧4:已知 year 和 dayofyear,怎么轉 datetime?

原 DataFrame

d = {\"year": [2019, 2019, 2020],"day_of_year": [350, 365, 1]
}df = pd.DataFrame(d)df

打印結果:

 year day_of_year
0201935012019365220201

轉 datetime 的 小技巧

步驟 1: 創建整數

df["int_number"] =
df["year"]*1000 + df["day_of_year"]

打印 df 結果:

year day_of_year int_number
0201935020193501201936520193652202012020001

步驟 2: to_datetime

df["date"]=pd.to_datetime(df["int_number"],format = "%Y%j")

注意 "%Y%j" 中轉化格式 j

打印結果:

 year day_of_year int_number date
0201935020193502019-12-161201936520193652019-12-3122020120200012020-01-01

小技巧5:如何將分類中出現次數較少的值歸為 others?

這也是我們在數據清洗、特征構造中面臨的一個任務。

如下一個 DataFrame:

d = {"name":['Jone','Alica','Emily','Robert','Tomas','Zhang','Liu','Wang','Jack','Wsx','Guo'],"categories": ["A", "C", "A", "D", "A","B", "B", "C", "A", "E", "F"]}
df = pd.DataFrame(d)df

結果:

 name categories
0 Jone A1 Alica C2 Emily A3 Robert D4 Tomas A5 Zhang B6 Liu B7 Wang C8 Jack A9 Wsx E10 Guo F

D、E、F 僅在分類中出現一次,A 出現次數較多。

步驟 1:統計頻次,并歸一

frequencies = df["categories"].value_counts(normalize = True)
frequencies

結果:

A 0.363636B 0.181818C 0.181818F 0.090909E 0.090909D 0.090909Name: categories, dtype: float64

步驟 2:設定閾值,過濾出頻次較少的值

threshold = 0.1small_categories = frequencies[frequencies < threshold].indexsmall_categories

結果:

Index(['F', 'E', 'D'], dtype='object')

步驟 3:替換值

df["categories"] = df["categories"] \
.replace(small_categories, "Others")

替換后的 DataFrame:

 name categories
0 Jone A1 Alica C2 Emily A3 Robert Others4 Tomas A5 Zhang B6 Liu B7 Wang C8 Jack A9 Wsx Others10 Guo Others

感謝各位的閱讀!關于“Pandas數據分析實用小技巧有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平山县| 济宁市| 缙云县| 新蔡县| 桦南县| 嵩明县| 灌南县| 神木县| 溧水县| 衡东县| 城固县| 河北区| 集贤县| 枞阳县| 绥棱县| 东阳市| 洞头县| 瑞安市| 天镇县| 凤城市| 藁城市| 神木县| 大英县| 夏邑县| 双辽市| 库尔勒市| 淮安市| 宜兴市| 伊宁市| 昌邑市| 武夷山市| 五华县| 文安县| 怀化市| 开原市| 额尔古纳市| 右玉县| 嘉禾县| 岑巩县| 方山县| 丹阳市|