python - 像 Excel 一样对数据框列进行平均

标签 python pandas dataframe

enter image description here

我有一个很大的数据集,对于依赖于另一列的其中一列,我必须随时取平均值。例如。第 1 行平均值,然后当我转到第 2 行时,我想要第 1 行和第 2 行的平均值,依此类推。此外,我的列中有非整数,我只想取整数的平均值,并且希望它跳过那些非整数而不影响我的平均值。 (包括这些行,但不包括在平均值中)。我本来想写一个for循环,但我很困惑,不知道如何实现它。任何帮助将不胜感激。

图片显示了dataFrame的一部分。如您所见,第一列基于“完整”、“不完整”(并且是每日合规性)。我正在导入一个 Excel 文件,并尝试对其进行修改,以便将完整/不完整分别变为 100% 和 0%,并添加一个新列来取平均值。但是,我希望平均值保持一致,包括每一天,并在没有输入完成/未完成数据的那一天停止(即当天和第二天,当人们完成/未完成项目时,那里会有数据) 。我需要每天跟踪任务的完成情况,最后添加最后一列,表明如果它们低于 85%,则它们“不再合规”,但只要它们高于 85%,它们就是“仍符合要求”。希望这足够清楚。

最佳答案

我将尝试制作一个名为 df 的示例数据框,并解释您可以做什么。

>> import pandas as pd
>> df = pd.DataFrame(
    [
        {'Make': 'Skoda', 'Flag': 'no integer'}, 
        {'Make': 'Kia', 'Flag': 1},
        {'Make': 'BMW', 'Flag': 0}, 
        {'Make': 'Lexus', 'Flag': 1}, 
        {'Make': 'Mercedes', 'Flag': 0},
    ]
)
>> df = df[['Make', 'Flag']] # just changing columns order
>> print(df)
       Make        Flag
0     Skoda  no integer
1       Kia           1
2       BMW           0
3     Lexus           1
4  Mercedes           0

您可以通过以下方式检查列类型:

>> df.dtypes
Make    object
Flag    object
dtype: object

我猜您的列中的列类型与我的 Flag 列中的列类型相同。但是,我可以创建另一列,其中只有“整数”值,其余的将为 NaN。我可以使用 isinstance() 函数来实现这一点。

>> df['Flag_int'] = df['Flag'].apply(lambda flag: flag if isinstance(flag, int) else pd.np.NaN)
>> print(df)
       Make        Flag  Flag_int
0     Skoda  no integer       NaN
1       Kia           1       1.0
2       BMW           0       0.0
3     Lexus           1       1.0
4  Mercedes           0       0.0

现在,当您准备好数据框时,您可以计算平均值。在您的情况下,您可以结合使用 expanding()mean() 方法。就我而言,结果位于 Flag_int_mean 功能中。

>> df['Flag_int_mean'] = df['Flag_int'].expanding().mean()
>> print(df)
       Make        Flag  Flag_int  Flag_int_mean
0     Skoda  no integer       NaN            NaN
1       Kia           1       1.0       1.000000
2       BMW           0       0.0       0.500000
3     Lexus           1       1.0       0.666667
4  Mercedes           0       0.0       0.500000

我相信这会有所帮助。

关于python - 像 Excel 一样对数据框列进行平均,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57643785/

相关文章:

python - 添加swig pythoncode以在Python对象上设置thisown标志

python - 识别前k个值并根据它们各自的排名顺序进行标记

python - 根据其他列的值将新列添加到数据框

python - 如何检查一行中的所有列是否都是正数?

python - 将数据框划分为包含所有列的行列表

scala - Spark Dataframe 随机 UUID 在每次转换/操作后发生变化

python - 替代pygame资源

python monary 0.2.3 (mongo monary driver) : error in setup on windows 64bit (Anaconda distribution)

python - 如何在 dataframe.set_value 中使用 "takeable=True"和索引器,尤其是多重索引

python - 解析器错误: Error tokenizing data C error