pandas數(shù)據(jù)缺失值|異常值|重復(fù)值處理

缺失值處理

import pandas as pd
# 讀取杭州天氣文件
df = pd.read_csv("hz_weather.csv")
# 數(shù)據(jù)透視表
df1 = pd.pivot_table(df, index=['天氣'], columns=['風向'], values=['最高氣溫'])
print(df.head())
print(df1.head())
# 用isnull()獲得缺失值位置為True,非缺失值位置為False的DataFrame
lack = df1.isnull()
print(lack)
# 用any()可以看到哪些列有缺失值
lack_col = lack.any()
print(lack_col)
# 顯示存在缺失值的行列
df1_lack_only = df1[df1.isnull().values == True]
print(df1_lack_only
# 刪除缺失的行
df1_del_lack_row = df1.dropna(axis=0)
print(df1_del_lack_row)
# 刪除缺失的列(一般不因為某列有缺失值就刪除列, 因為列常代表某指標)
df1_del_lack_col = df1.dropna(axis=1)
print(df1_del_lack_col)  # 只剩下北風
# 使用字符串代替缺失值
df1_fill_lcak1 = df1.fillna('missing')
print(df1_fill_lcak1)
# 使用前一個數(shù)據(jù)(同列的上一個數(shù)據(jù))替代缺失值,第一行的缺失值沒法找到替代值
df1_fill_lack2 = df1.fillna(method='pad')
print(df1_fill_lack2)
# 使用后一個數(shù)據(jù)(同列的下一個數(shù)據(jù))替代缺失值,最后一行的缺失值沒法找到替代值
# 參數(shù)limit=1限制每列最多只能替代掉一個NaN
df1_fill_lack3 = df1.fillna(method='bfill', limit=1)
print(df1_fill_lack3)
# df對象的mean()方法會求每一列的平均值,也就是每個指標的平均值.下面使用平均數(shù)代替NaN
df1_fill_lack4 = df1.fillna(df1.mean())
print(df1_fill_lack4)

檢測異常值

檢測異常值的方法:https://blog.csdn.net/qianfeng_dashuju/article/details/81708597

假設(shè)"最低氣溫"是符合正態(tài)分布的先朦,那么就可以根據(jù)3σ原則,認為落在[?3σ+μ,+3σ+μ]之外的值是異常值

# %matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
# 讀取杭州天氣數(shù)據(jù)
df = pd.read_csv("hz_weather.csv")
# 創(chuàng)建圖的布局,位于1行1列,寬度為8,高度為5,這兩個指標*dpi=像素值,dpi默認為80(保存圖像時為100)
# 返回的fig是繪圖窗口,ax是坐標系
fig, ax = plt.subplots(1, 1, figsize=(8, 5))
# hist函數(shù)繪制柱狀圖,第一個參數(shù)傳入數(shù)值序列(這里是Series),這里即是最低氣溫.bins指定有多少個柱子
ax.hist(df['最低氣溫'], bins=20)
# 顯示圖
plt.show()
# 取最低氣溫一列,得到的是Series對象
s = df['最低氣溫']
# 計算到miu的距離(還沒取絕對值)
zscore = s - s.mean()
# 標準差sigma
sigma = s.std()
# 添加一列,記錄是否是異常值,如果>3倍sigma就認為是異常值
df['isOutlier'] = zscore.abs() > 3 * sigma
# 計算異常值數(shù)目,也就是這一列中值為True的數(shù)目
print(df['isOutlier'].value_counts())

四分位數(shù)作箱型圖和檢測異常值

p分位數(shù)概念:https://blog.csdn.net/u011327333/article/details/71263081?locationNum=14&fps=1

# %matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt

# 符合格式的txt文件也可以直接當csv文件讀入
df = pd.read_csv('sale_data.txt')
# 創(chuàng)建圖布局
fig, ax = plt.subplots(1, 1, figsize=(8, 5))
# 取上海數(shù)據(jù)
df_ = df[df['位置'] == '上海']
# 函數(shù)boxplot用于繪制箱型圖,繪制的指標是'成交量',坐標用前面matplotlib創(chuàng)建的坐標系
df_.boxplot(column='成交量', ax=ax)
plt.show()

# 查看上海的成交量情況,這里即提取為Series對象
s = df_['成交量']
print(s.describe())

# 這里規(guī)避A value is trying to be set on a copy of a slice from a DataFrame
df_ = df_.copy()
# 這里將大于上四分位數(shù)(Q3)的設(shè)定為異常值
# df_['isOutlier'] = s > s.quantile(0.75)
df_.loc[:, 'isOutlier'] = s > s.quantile(0.75)
# 查看上海成交量異常的數(shù)據(jù)
df_rst = df_[df_['isOutlier'] == True]
print(df_rst)

重復(fù)值處理

import pandas as pd

# 讀取杭州天氣數(shù)據(jù)
df = pd.read_csv('E:/Data/practice/hz_weather.csv')
# 檢測重復(fù)行,生成bool的DF
s_isdup = df.duplicated()
# print(s_isdup)
print(s_isdup.value_counts())  # 全是False
# 檢測最高氣溫重復(fù)的行
s_isdup_zgqw = df.duplicated('最高氣溫')
print(s_isdup_zgqw.value_counts())
# 去除'最高氣溫'重復(fù)的行
df_dup_zgqw = df.drop_duplicates('最高氣溫')
# print(df_dup_zgqw)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拧额,一起剝皮案震驚了整個濱河市而昨,隨后出現(xiàn)的幾起案子毫深,更是在濱河造成了極大的恐慌萄焦,老刑警劉巖扇商,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凤瘦,死亡現(xiàn)場離奇詭異,居然都是意外死亡案铺,警方通過查閱死者的電腦和手機廷粒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來红且,“玉大人,你說我怎么就攤上這事涤姊∠痉” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵思喊,是天一觀的道長壁酬。 經(jīng)常有香客問我,道長恨课,這世上最難降的妖魔是什么舆乔? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮剂公,結(jié)果婚禮上希俩,老公的妹妹穿的比我還像新娘。我一直安慰自己纲辽,他們只是感情好颜武,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布璃搜。 她就那樣靜靜地躺著,像睡著了一般鳞上。 火紅的嫁衣襯著肌膚如雪这吻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天篙议,我揣著相機與錄音唾糯,去河邊找鬼。 笑死鬼贱,一個胖子當著我的面吹牛移怯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吩愧,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼芋酌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了雁佳?” 一聲冷哼從身側(cè)響起脐帝,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎糖权,沒想到半個月后堵腹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡星澳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年疚顷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禁偎。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡腿堤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出如暖,到底是詐尸還是另有隱情笆檀,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布盒至,位于F島的核電站酗洒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏枷遂。R本人自食惡果不足惜樱衷,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望酒唉。 院中可真熱鬧矩桂,春花似錦、人聲如沸痪伦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至牲蜀,卻和暖如春笆制,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涣达。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工在辆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人度苔。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓匆篓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寇窑。 傳聞我的和親對象是個殘疾皇子鸦概,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361