添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

先要有一个很简单的被命名为 data 的表:

第三列是一个名曰周杰伦的人历年来每个月的月薪,其中2016年月薪10万,纵观他历年来的月薪基本不超过3万(显然他不是我的偶像胖伦),因此对于这个人来说月薪10万是有些异常的。

有些人可能会说,这不简单?直接:【 data[monthly_pay] [data[monthly_pay] >= 10] = null 】就好了啊,可是你忘记了,周杰伦挣不了10万,可是库克完全没压力啊。你这么一句python运行下去,表里关于库克的月薪数据都要被删掉了。

那么,怎么识别到这个10万的数据,进而修改它呢?

我们采用每年和去年的月薪相比的方式,即:若今年的月薪超过去年的 2 倍,且去年的月薪在 5 万以下的,我们将修改今年的月薪为去年月薪的 2 倍值。

首先需要用 iterrows() 遍历这个表,找出异常值,然后修改就好了,下面是 python 代码:

# -*- coding:utf-8 -*-
import pandas as pd
import numpy as np
from pandas import DataFrame,Series
datafile = u'D:\\pythondata\\learn\\iterrows.xlsx'
data = pd.read_excel(datafile)
data = DataFrame(data)
#首先将每一年对应的去年的月薪生成一列新的数据,匹配到最后一列
data_q1 = data[['name', 'year', 'monthly_pay']].copy()
data_q1['year'] = data['year']+1
data_q1.rename(columns={'monthly_pay':'monthly_pay_q1'}, inplace = True)
data = pd.merge(data, data_q1, how='left', left_on=['name','year'], right_on=['name','year'])
for index,row in data.iterrows():
    if ((row['monthly_pay']) >= (2 * (row['monthly_pay_q1']))) & (row['monthly_pay_q1']<= 5):
        data.at[index, 'monthly_pay'] = (2 * (data.at[index,'monthly_pay_q1'])).astype(int)
data = data[['name', 'year', 'monthly_pay']]

更改后的data表:

iterrows()返回值为元组(index,row) ,for循环定义了两个变量,index, row,那么返回的元组(index,row),index=index,row=row。如果for循环中只定义一个变量 row ,则 row 就是整个元组。论方便的话还是定义两个变量吧。

很简单的功能对吧,代码也很简单,大神们就用不着了,新手们可以了解一下。

iterrows()的官网地址:

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.iterrows.htm

先要有一个很简单的被命名为 data 的表:第三列是一个名曰周杰伦的人历年来每个月的月薪,其中2016年月薪10万,纵观他历年来的月薪基本不超过3万(显然他不是我的偶像胖伦),因此对于这个人来说月薪10万是有些异常的。有些人可能会说,这不简单?直接:【 data[monthly_pay] [data[monthly_pay] &amp;gt;= 10] = null 】就好了啊,可是你忘记了... values = [1, 2, 3, 4, 5] min_index, min_value = min(enumerate(values), key=operator.itemgetter(1)) max_index, max_value = max(enumerate(values), key=operato...
前几天在做决策树预测股票涨跌的小项目,里面要对 DataFrame 类型的变量 进行 迭代 修改 ,我用的是it erro ws 的index和row 但是!测试了好久的 代码 ,df的值始终没变化,一丁点都没有! 直到后来有篇帖子点到 row[" "] 修改 的值是临时的,不是对原数据直接 修改 ! 这点很重要,就像C语言里传个整型参给函数(不是指针系列的),不论函数对它怎么 修改 ,return后,这个变量的值压根不会改动 回到 python ,所以只要在 修改 语句的末尾添加: results.iloc[index] = row
DataFrame 遍历 方式主要有三种 DataFrame .it erro ws ()按行顺序优先,接着依次按列迭代 DataFrame .iteritems()按列顺序优先,接着依次按行迭代 DataFrame .itertuples()按行顺序优先,接着依次按列迭代下图的 DataFrame 沿用上一篇的示例。剧名,集數,主演,監製 "風雨晴Come Rain, Come Shine",20,石修、黃日華、苗僑偉...
对于 pandas. DataFrame 有以下三种 遍历 方法 it erro ws (): 按行 遍历 ,将 DataFrame 的每一行迭代为 (index, data ) 对,可以通过 data [column_name] 和 data .column_name对元素 进行 访问。 itertuples(): 按行 遍历 ,将 DataFrame 的每一行迭代为元祖,可以通过 data [ 列号数值 ] 和 data .column_name对元素 进行 访问 iteritems():按列 遍历 ,将 DataFrame 的每一列迭代为.
color_out_file = 'Color_V2.xlsx' devices_out_file = 'Devices_V2.xlsx' fixed_out_file = 'Devices_Fixed_Item_V2.xlsx' other_out_file = 'Devices_Other_Item_V2.xlsx' parameter_out_file = '.
1. 首先,可以使用pandas库读入 dataframe 数据,并针对两列的数据 进行 异常值 分析。 2. 可以通过绘制箱线图或直方图 进行 数据分布的可视化,查看是否存在 异常值 的出现。 3. 再可以根据统计学方法,如四分位数、标准差等计算方法,判断是否存在 异常值 ,并标记它们的位置。 4. 最后,通过排除或替换 异常值 的方法,得到清洁的数据集,便于后续分析和建模。 异常值 处理 : 1. 首先,可以针对 异常值 进行 一些分析,找出其出现的原因,例如录入错误等。 2. 然后,可以根据非异常数据的均值、方差、最大值、最小值等统计量,对 异常值 进行 替换。 3. 替换的方法可以采用一些常用的方法,如 位数、平均数等 进行 替换。 4. 如果 异常值 较多或者替换后的数据不够准确,可能需要 进行 模型的重新训练或参数的调整。 以上是大概的思路,具体实现需根据数据情况、分析目的和实际需求 进行 调整。