最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用pandas的box_plot去除異常值

 更新時間:2019年12月10日 08:38:12   作者:blerli  
今天小編就為大家分享一篇使用pandas的box_plot去除異常值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,直接上代碼吧!

#-*- coding:utf-8 _*- 
""" 
@author:Administrator
@file: standard_process.py
@time: 2018/8/9
"""
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import sys
import os
import seaborn as sns
from sklearn.preprocessing import StandardScaler
'''
通過box_plot(盒圖來確認(rèn))異常值
'''

# 獲取項目根目錄
input_data_path = os.path.dirname(os.path.dirname(os.getcwd())) + '/input/'
print(input_data_path)

# 獲取數(shù)據(jù)得位置
month_6_train_path = input_data_path +'month_6_1.csv'
month_6_test_path = input_data_path + 'test_data_6_1.csv'

# 讀取數(shù)據(jù)
data_train = pd.read_csv(month_6_train_path)
data_test = pd.read_csv(month_6_test_path)

# print(data_train.head())
# print(data_test.head())

# 暫時不考慮省份城市地址
# 月份只有一個月,暫時不考慮
# bedrooms 需要看成分類型得數(shù)據(jù)
# 只取出longitude,latitude,price,buildingTypeId,bedrooms,daysOnMarket


# 取出這些數(shù)據(jù);
# train = data_train[['longitude', 'latitude', 'price', 'buildingTypeId', 'bedrooms', 'daysOnMarket']]
# train= train.dropna()
train = data_test[['longitude', 'latitude', 'price', 'buildingTypeId', 'bedrooms', 'daysOnMarket']]
print(train.head())
# print(test.head())
# print(train.isna().sum())
# sns.pairplot(train)
# # sns.pairplot(test)
# plt.show()


# 特征清洗:異常值清理用用箱圖;
# 分為兩步走,一步是單列異常值處理,
# 第二步是多列分組異常值處理
def remove_filers_with_boxplot(data):
 p = data.boxplot(return_type='dict')
 for index,value in enumerate(data.columns):
  # 獲取異常值
  fliers_value_list = p['fliers'][index].get_ydata()
  # 刪除異常值
  for flier in fliers_value_list:
   data = data[data.loc[:,value] != flier]
 return data

print(train.shape)
train = remove_filers_with_boxplot(train)
print(train.shape)

'''
以上得異常值處理還不夠完善,
完善的異常值處理是分組判斷異常值,
也就是他在單獨這一列種,還有一種情況是多余不同的分類,他是不是存在異常
所以就需要用到分組獲取數(shù)據(jù)再箱圖處理掉異常數(shù)據(jù);
'''
train = train[pd.isna(train.buildingTypeId) != True]
print(train.shape)

print(train['bedrooms'].value_counts())
'''
3.0 8760
2.0 5791
4.0 5442
1.0 2056
5.0 1828
6.0  429
0.0  159
7.0  82
由于樣本存在不均衡得問題:所以只采用12345數(shù)據(jù):也就是說去掉0,7,6,到時候測試數(shù)據(jù)也要做相同得操作;
還有一種是通過下采樣或者是上采樣的方式進(jìn)行,這里暫時不考慮;
'''
# 只取bedrooms 為1,2,3,4,5 得數(shù)據(jù)
train = train[train['bedrooms'].isin([1,2,3,4,5])]
print(train.shape)


# 利用pivot分組后去掉異常點
def use_pivot_box_to_remove_fliers(data,pivot_columns_list,pivot_value_list):
 for column in pivot_columns_list:
  for value in pivot_value_list:
   # 獲取分組的dataframe
   new_data = data.pivot(columns=column,values=value)
   p = new_data.boxplot(return_type='dict')
   for index,value_new in enumerate(new_data.columns):
    # 獲取異常值
    fliers_value_list = p['fliers'][index].get_ydata()
    # 刪除異常值
    for flier in fliers_value_list:
     data = data[data.loc[:, value] != flier]
 return data


# train = use_pivot_box_to_remove_fliers(train,['buildingTypeId','bedrooms'],['price','daysOnMarket','longitude','latitude'])
print(train.shape)
# print(train.isna().sum())

# 以上就不考慮longitude和latitude的問題了;應(yīng)為房屋的類型以及房間個數(shù)和經(jīng)緯度關(guān)系不大,但是也不一定,
# 實踐了一下加上longitude和latitude之后樣本數(shù)據(jù)并沒有減少;

# sns.pairplot(train)
# plt.show()

# 先進(jìn)一步做處理將緯度小于40的去掉
train = train[train.latitude>40]

# --------------------------------》》》
# 對于數(shù)值類型得用均值填充,但是在填充之前注意一些原本就是分類型數(shù)據(jù)得列
# def fill_na(data):
#  for column in data.columns:
#   if column.dtype != str:
#    data[column].fillna(data[column].mean())
#  return data

# 以上是異常值,或者是離群點的處理,以及均值填充數(shù)據(jù)
# 下面將根據(jù)catter圖或者是hist圖來處理數(shù)據(jù)


# # 標(biāo)準(zhǔn)化數(shù)據(jù)
# train = StandardScaler().fit_transform(train)
# # 標(biāo)準(zhǔn)化之后畫圖發(fā)現(xiàn)數(shù)據(jù)分布并沒有變
#
# sns.pairplot(pd.DataFrame(train))
# plt.show()

'''
1:循環(huán)遍歷整個散點圖用剛才寫好的算法去除點;
'''

# 獲取
# def get_outlier(x,y,init_point_count ,distance,least_point_count):
#  x_outliers_list = []
#  y_outliers_list = []
#  for i in range(len(x)):
#   for j in range(len(x)):
#    d =np.sqrt(np.square(x[i]-x[j])+np.square(y[i]-y[j]))
#    # print('距離',d)
#    if d <= distance:
#     init_point_count +=1
#   if init_point_count <least_point_count+1:
#    x_outliers_list.append(x[i])
#    y_outliers_list.append(y[i])
#    print(x[i],y[i])
#   init_point_count =0
#  return x_outliers_list,y_outliers_list
#
# def circulation_to_remove_outliers(data,list_columns=['longitude','latitude','price','daysOnMarket',]):
#  for column_row in list_columns:
#   for column_col in list_columns:
#    if column_row != column_col:
#     x = list(data[column_row])
#     y = list(data[column_col])
#     x_outliers_list ,y_outliers_list = get_outlier(x,y,0,0.01,2)
#     for x_outlier in x_outliers_list:
#      data = data[data.loc[:, column_row] != x_outlier]
#     for y_outlier in y_outliers_list:
#      data = data[data.loc[:, column_col] != y_outlier]
#  return data
#
# train = circulation_to_remove_outliers(train)
#
# print(train.shape)




# def get_outlier(x,y,init_point_count ,distance,least_point_count):
#  for i in range(len(x)):
#   for j in range(len(x)):
#    d =np.sqrt(np.square(x[i]-x[j])+np.square(y[i]-y[j]))
#    # print('距離',d)
#    if d <= distance:
#     init_point_count +=1
#   if init_point_count <least_point_count+1:
#    print(x[i],y[i])
#   init_point_count =0
#
# get_outlier(train['longitude'],train['latitude'],0,0.3,1)





# sns.pairplot(train)
# plt.show()
# train = train.dropna()
# print(train.tail())
# train.to_csv('./finnl_processing_train_data_6_no_remove_outliers_test.csv',index=False)

相關(guān)文章

  • Python 中的Sympy詳細(xì)使用

    Python 中的Sympy詳細(xì)使用

    這篇文章主要介紹了Python 中的Sympy詳細(xì)使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Pyhton爬蟲知識之正則表達(dá)式詳解

    Pyhton爬蟲知識之正則表達(dá)式詳解

    正則表達(dá)式又稱規(guī)則表達(dá)式,計算機科學(xué)的一個概念,正則表達(dá)式通常被用來檢索、替換那些符合某個模式(規(guī)則)的文本,這篇文章主要給大家介紹了關(guān)于Pyhton爬蟲知識之正則表達(dá)式的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • PyCharm如何設(shè)置Console控制臺輸出自動換行

    PyCharm如何設(shè)置Console控制臺輸出自動換行

    這篇文章主要介紹了PyCharm如何設(shè)置Console控制臺輸出自動換行問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python中sets模塊的用法實例

    python中sets模塊的用法實例

    這篇文章主要介紹了python中sets模塊的用法實例,該模塊用來處理集合類型的數(shù)據(jù),在這個模塊中提供了兩個集合類:Set(可變集合)和ImmurableSet(不可變集合),本文實例主要分析了Set(可變集合)的用法,需要的朋友可以參考下
    2014-09-09
  • Python使用列表和字典實現(xiàn)簡單的考試系統(tǒng)詳解

    Python使用列表和字典實現(xiàn)簡單的考試系統(tǒng)詳解

    這篇文章主要介紹了Python使用列表和字典實現(xiàn)簡單的考試系統(tǒng),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • python?中Mixin混入類的使用方法詳解

    python?中Mixin混入類的使用方法詳解

    這篇文章主要介紹了python?中Mixin混入類的使用方法詳解,Mixin?混入也可以說是編程模式,并不是什么新的語法,用好混入類可以使自己的代碼結(jié)構(gòu)清晰,功能明了,所以以后在設(shè)計類時要多考慮使用Mixin混入類的實現(xiàn)方式
    2022-07-07
  • Python中if __name__ == ''__main__''作用解析

    Python中if __name__ == ''__main__''作用解析

    這篇文章主要介紹了Python中if __name__ == '__main__'作用解析,這斷代碼在Python中非常常見,它有作用?本文就解析了它的作用,需要的朋友可以參考下
    2015-06-06
  • Django框架自定義session處理操作示例

    Django框架自定義session處理操作示例

    這篇文章主要介紹了Django框架自定義session處理操作,結(jié)合實例形式分析了Django框架session操作的原理以及基于session的登陸、驗證等相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • python 實現(xiàn)批量圖片識別并翻譯

    python 實現(xiàn)批量圖片識別并翻譯

    這篇文章主要介紹了python 實現(xiàn)批量圖片識別并翻譯,幫助大家利用python處理圖片,感興趣的朋友可以了解下
    2020-11-11
  • pandas 中對特征進(jìn)行硬編碼和onehot編碼的實現(xiàn)

    pandas 中對特征進(jìn)行硬編碼和onehot編碼的實現(xiàn)

    今天小編就為大家分享一篇pandas 中對特征進(jìn)行硬編碼和onehot編碼的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評論

南宫市| 邵武市| 宁陵县| 永济市| 图片| 财经| 大邑县| 西青区| 上蔡县| 涟源市| 丹江口市| 兴国县| 丰都县| 嘉禾县| 屏山县| 岑溪市| 沙坪坝区| 玛多县| 垫江县| 许昌县| 南京市| 新泰市| 旅游| 内江市| 普宁市| 石门县| 海原县| 麦盖提县| 磐石市| 广安市| 裕民县| 融水| 新宾| 太保市| 如东县| 康乐县| 广水市| 太保市| 银川市| 香河县| 潜江市|