当列有字符串时计算 pandas 中的平均值
Calculate the mean in pandas while a column has a string
我目前正在学习 pandas 并且我正在使用 imdb 电影数据库,其中一列是电影的持续时间。但是,其中一个值是“None”,所以我无法计算平均值,因为中间有这个字符串。我想将“None”更改为 = 0,但这会使结果发生偏差。就像下面的代码一样。
dur_temp = duration.replace("None", 0)
dur_temp = dur_temp.astype(float)
descricao_duration = dur_temp.mean()
关于我应该怎么做才能不扭曲数据的任何想法?我还绘制了它的图表,它变得更清楚它是如何倾斜的。
使它们成为 np.NAN 值
我把它写成答案是因为我不能评论 df = df.replace('None ', np.NaN) 或 df.replace('None', np.NaN, inplace=真)
您可以将“None”替换为 numpy.nan
,而不是使用 0。
像这样应该可以解决问题:
import numpy as np
dur_temp = duration.replace("None", np.nan)
descricao_duration = dur_temp.mean()
像这样按条件过滤
df[df['a']!='None'] #assuming your mean values are in column a
您可以使用 fillna(value=np.nan)
如下所示:
descricao_duration = dur_temp.fillna(value=np.nan).mean()
演示:
import pandas as pd
import numpy as np
dur_temp = pd.DataFrame({'duration': [10, 20, None, 15, None]})
descricao_duration = dur_temp.fillna(value=np.nan).mean()
print(descricao_duration)
输出:
duration 15.0
dtype: float64
如果您希望它适用于您的 pandas 系列中的任何字符串,您可以使用 pd.to_numeric
:
pd.to_numeric(dur_temp, errors='coerce').mean()
这样所有不能转为float的值都会被NaN
代替,不管是哪个
我目前正在学习 pandas 并且我正在使用 imdb 电影数据库,其中一列是电影的持续时间。但是,其中一个值是“None”,所以我无法计算平均值,因为中间有这个字符串。我想将“None”更改为 = 0,但这会使结果发生偏差。就像下面的代码一样。
dur_temp = duration.replace("None", 0)
dur_temp = dur_temp.astype(float)
descricao_duration = dur_temp.mean()
关于我应该怎么做才能不扭曲数据的任何想法?我还绘制了它的图表,它变得更清楚它是如何倾斜的。
使它们成为 np.NAN 值
我把它写成答案是因为我不能评论 df = df.replace('None ', np.NaN) 或 df.replace('None', np.NaN, inplace=真)
您可以将“None”替换为 numpy.nan
,而不是使用 0。
像这样应该可以解决问题:
import numpy as np
dur_temp = duration.replace("None", np.nan)
descricao_duration = dur_temp.mean()
像这样按条件过滤
df[df['a']!='None'] #assuming your mean values are in column a
您可以使用 fillna(value=np.nan)
如下所示:
descricao_duration = dur_temp.fillna(value=np.nan).mean()
演示:
import pandas as pd
import numpy as np
dur_temp = pd.DataFrame({'duration': [10, 20, None, 15, None]})
descricao_duration = dur_temp.fillna(value=np.nan).mean()
print(descricao_duration)
输出:
duration 15.0
dtype: float64
如果您希望它适用于您的 pandas 系列中的任何字符串,您可以使用 pd.to_numeric
:
pd.to_numeric(dur_temp, errors='coerce').mean()
这样所有不能转为float的值都会被NaN
代替,不管是哪个