六個(gè)實(shí)用Pandas數(shù)據(jù)處理代碼
前言:
今天和大家分享自己總結(jié)的6個(gè)常用的Pandas數(shù)據(jù)處理代碼,對(duì)于經(jīng)常處理數(shù)據(jù)的coder最好熟練掌握。
選取有空值的行
在觀察數(shù)據(jù)結(jié)構(gòu)時(shí),該方法可以快速定位存在缺失值的行。
df = pd.DataFrame({'A': [0, 1, 2],
'B': [0, 1, None],
'C': [0, None, 2]})
df[df.isnull().T.any()]輸出:
A B C A B C
0 0 0.0 0.0 1 1 1.0 NaN
1 1 1.0 NaN --> 2 2 NaN 2.0
2 2 NaN 2.0
快速替換列值
實(shí)際數(shù)據(jù)處理經(jīng)常會(huì)根據(jù)一些限定條件來(lái)替換列中的值。
df = pd.DataFrame({'name':['Python', 'Java', 'C']})
# 第一種方式
df['name'].replace('Java', 'JavaScript', inplace=True)
# 第二種方式
df.loc[df['name'].str.contains('Java'), 'name'] = 'JavaScript'輸出:
name name
0 Python 0 Python
1 Java ---> 1 JavaScript
2 C 2 C
對(duì)列進(jìn)行分區(qū)
很多情況下,對(duì)于數(shù)值類(lèi)型的數(shù)據(jù),我們需要分區(qū)來(lái)計(jì)算每個(gè)區(qū)間數(shù)據(jù)出現(xiàn)的頻率。這時(shí)用 pd.cut 就能很好的解決這一問(wèn)題。
import random age = random.sample(range(90), 20) cut_res = pd.cut(age, bins=[0, 18, 35, 60, 90]) # cut_res type:<class 'pandas.core.arrays.categorical.Categorical'> cut_res.value_counts()
輸出:
(0, 18] 6
(18, 35] 1
(35, 60] 6
(60, 90] 7
將一列分為多列
在文本數(shù)據(jù)清洗時(shí),一些列中存在分隔符('', ',', ':')分隔的值,我們只需將該列根據(jù)分隔符進(jìn)行 split 即可。
import pandas as pd
df = pd.DataFrame({'address': ['四川省 成都市',
'湖北省 武漢市',
'浙江省 杭州市']})
res = df['address'].str.split(' ', expand=True)
res.columns = ['province', 'city']輸出:
province city
0 四川省 成都市
1 湖北省 武漢市
2 浙江省 杭州市
expand參數(shù)選擇是否擴(kuò)展為 DataFrame,F(xiàn)alse 則返回 Series
中文篩選
同樣在清洗過(guò)程中,往往會(huì)出現(xiàn)一些不需要的中文字段,這時(shí)直接用 str.contains 篩選即可。
df = pd.DataFrame({'mobile_phone':
['15928765644',
'15567332235',
'暫無(wú)']})
df[~df['mobile_phone'].str.contains('[\u4e00-\u9fa5]')]輸出:
mobile_phone mobile_phone
0 15928765644 0 15928765644
1 15567332235 --> 1 15567332235
2 暫無(wú)
更改列的位置
有時(shí)我們需要調(diào)整列的位置,當(dāng)數(shù)據(jù)列較少時(shí),可以用下面的方式
df = pd.DataFrame({'name': ['A', 'B', 'C'],
'age': [10, 20, 30],
'gender': [0, 1, 0]})
df = df[['name', 'gender', 'age']]輸出:
name age gender name gender age
0 A 10 0 0 A 0 10
1 B 20 1 --> 1 B 1 20
2 C 30 0 2 C 0 30
如果列較多,那么,一個(gè)個(gè)列舉出來(lái)會(huì)比較繁瑣,推薦下面插入的方式。
col = df['gender']
df.drop('gender', axis=1, inplace=True)
df.insert(1, 'gender', col)這就是今天分享的主要內(nèi)容,實(shí)踐永遠(yuǎn)是最好的學(xué)習(xí)方式,記憶的也更牢固。
到此這篇關(guān)于六個(gè)實(shí)用Pandas數(shù)據(jù)處理代碼的文章就介紹到這了,更多相關(guān) Pandas數(shù)據(jù)處理 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 分享5個(gè)數(shù)據(jù)處理更加靈活的pandas調(diào)用函數(shù)方法
- Python?Pandas讀取Excel日期數(shù)據(jù)的異常處理方法
- Python數(shù)據(jù)處理的26個(gè)Pandas實(shí)用技巧總結(jié)
- python?pandas數(shù)據(jù)處理教程之合并與拼接
- 詳解pandas中缺失數(shù)據(jù)處理的函數(shù)
- python優(yōu)化數(shù)據(jù)預(yù)處理方法Pandas pipe詳解
- python數(shù)據(jù)處理67個(gè)pandas函數(shù)總結(jié)看完就用
- pandas中對(duì)文本類(lèi)型數(shù)據(jù)的處理小結(jié)
- 淺談Pandas dataframe數(shù)據(jù)處理方法的速度比較
相關(guān)文章
在Python中使用filter去除列表中值為假及空字符串的例子
今天小編就為大家分享一篇在Python中使用filter去除列表中值為假及空字符串的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
PYTHON基礎(chǔ)-時(shí)間日期處理小結(jié)
PYTHON時(shí)間日期處理函數(shù)以datetime為中心, 起點(diǎn)或中轉(zhuǎn), 轉(zhuǎn)化為目標(biāo)對(duì)象, 涵蓋了大多數(shù)業(yè)務(wù)場(chǎng)景中需要的日期轉(zhuǎn)換處理,這里就為大家介紹一下,需要的朋友可以參考下2018-05-05
TensorFlow實(shí)現(xiàn)RNN循環(huán)神經(jīng)網(wǎng)絡(luò)
這篇文章主要介紹了TensorFlow實(shí)現(xiàn)RNN循環(huán)神經(jīng)網(wǎng)絡(luò),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
Python Django獲取URL中的數(shù)據(jù)詳解
這篇文章主要介紹了Python Django獲取URL中的數(shù)據(jù)詳解,小編覺(jué)得挺不錯(cuò)的,這里分享給大家,供需要的朋友參考2021-11-11
Python?from?import導(dǎo)包ModuleNotFoundError?No?module?named
最近在執(zhí)行python腳本時(shí),from?import的模塊沒(méi)有被加載進(jìn)來(lái),找不到module,這篇文章主要給大家介紹了關(guān)于Python?from?import導(dǎo)包ModuleNotFoundError?No?module?named找不到模塊問(wèn)題的解決辦法,需要的朋友可以參考下2022-08-08
python 點(diǎn)云地面點(diǎn)濾波-progressive TIN densification(PTD)算法介紹
關(guān)于地面點(diǎn)濾波的概念我們要與孤立點(diǎn)(outlier)濾波區(qū)分開(kāi),孤立點(diǎn)濾波可以理解為圖像中的去噪,去除數(shù)據(jù)測(cè)量過(guò)程中受到飛鳥(niǎo)、多路徑效應(yīng)所產(chǎn)生的遠(yuǎn)低于/高于其他數(shù)據(jù)的點(diǎn)。今天通過(guò)本文給大家分享python PTD點(diǎn)云地面點(diǎn)濾波的相關(guān)知識(shí),一起看看吧2021-08-08

