楼主: casey_c
3281 1

[程序分享] 识别 Dataframe 中的异常值 [推广有奖]

  • 0关注
  • 10粉丝

博士生

92%

还不是VIP/贵宾

-

威望
0
论坛币
96 个
通用积分
2.1003
学术水平
2 点
热心指数
15 点
信用等级
2 点
经验
11502 点
帖子
278
精华
0
在线时间
94 小时
注册时间
2016-11-22
最后登录
2022-5-2

楼主
casey_c 发表于 2017-8-18 11:28:23 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币




以下内容转自 数析学院,只节选了部分,有需要的同学可以直接查看原文


  1. import pandas as pd
  2. import sys
复制代码

  1. # 创建一个 dataframe 并以日期作为索引
  2. States = ['NY', 'NY', 'NY', 'NY', 'FL', 'FL', 'GA', 'GA', 'FL', 'FL']
  3. data = [1.0, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  4. idx = pd.date_range('1/1/2012', periods=10, freq='MS')
  5. df1 = pd.DataFrame(data, index=idx, columns=['Revenue'])
  6. df1['State'] = States

  7. # 创建第二个 dataframe
  8. data2 = [10.0, 10.0, 9, 9, 8, 8, 7, 7, 6, 6]
  9. idx2 = pd.date_range('1/1/2013', periods=10, freq='MS')
  10. df2 = pd.DataFrame(data2, index=idx2, columns=['Revenue'])
  11. df2['State'] = States
复制代码
  1. # 连接两个 dataframe
  2. df = pd.concat([df1,df2])
  3. df
复制代码
1.jpg

识别异常值的方法

  1. # 方法1

  2. # 新建一个 df 副本
  3. newdf = df.copy()

  4. newdf['x-Mean'] = abs(newdf['Revenue'] - newdf['Revenue'].mean())
  5. newdf['1.96*std'] = 1.96*newdf['Revenue'].std()  
  6. newdf['Outlier'] = abs(newdf['Revenue'] - newdf['Revenue'].mean()) > 1.96*newdf['Revenue'].std()
  7. newdf
复制代码
2.jpg

  1. # 方法 2
  2. # 按照 item 分组

  3. # 新建一个 df 的副本
  4. newdf = df.copy()

  5. State = newdf.groupby('State')

  6. newdf['Outlier'] = State.transform( lambda x: abs(x-x.mean()) > 1.96*x.std() )
  7. newdf['x-Mean'] = State.transform( lambda x: abs(x-x.mean()) )
  8. newdf['1.96*std'] = State.transform( lambda x: 1.96*x.std() )
  9. newdf
复制代码
3.jpg

以上内容节选自 数析学院,原文后续还有多种识别方法,有需要的同学可以先直接到 数析学院 查看原文


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Dataframe Frame Fram Data RAM

沙发
casey_c 发表于 2017-8-22 10:57:11

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-27 06:31