以鸢尾花数据集为例,计算方差并修改describe方法返回值?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
话说苏南大叔在描述dataframe
的.describe()
方法的时候,发现返回值里面只有总体标准差std
,而没有总体方差var
的数据。所以,苏南大叔试图对.describe()
这个返回值进行修改,以期待获得一个满意的值。
苏南大叔的“程序如此灵动”,这里记录苏南大叔的代码所学所想。测试环境:win10
,python@3.11.0
,numpy@1.24.2
,pandas@1.5.3
。
理论准备
本文的需求,相关的文章比较多,这里就列出几个密切相关的文章吧。
- 如何理解
.describe()
返回值:https://newsn.net/say/dataframe-describe.html - 如何理解方差标准差:https://newsn.net/say/var-std.html
- 如何翻转一个
dataframe
:https://newsn.net/say/dataframe-t.html dataframe
如何插入一行数据:https://newsn.net/say/dataframe-insert.html
下面的代码中,先引入本文的主角,鸢尾花数据集的.describe()
结果。
import pandas as pd
data_url = "http://download.tensorflow.org/data/iris_training.csv"
column_names = ["萼长", "萼宽", "瓣长", "瓣宽", "种类"]
df = pd.read_csv(data_url, header=0, names=column_names)
df_desc = df.describe()
计算总体方差var
计算的方法很多,这里直接使用df
对象的.var()
方法,进行再加工。最终获得一个转置过的dataframe
。当然,也可以利用std
进行乘方计算。
方案一
df_vars = df.var().to_frame()
df_vars = pd.DataFrame(df_vars.values.T, columns=df_vars.index, index=["var"])
方案二
df_vars = pow(df_desc.loc['std'],2).to_frame()
df_vars = pd.DataFrame(df_vars.values.T, columns=df_vars.index, index=["var"])
方案三
_list = []
for c in column_names:
_list.append(df[c].var())
df_vars = pd.DataFrame([_list], index=["var"], columns=tuple(column_names))
插入目标位置
目标是把var
的结果放到std
后面,这里也有非常多的方案做到这一点,这里选择一个苏南大叔比较喜欢的方案。
df_desc_new = pd.concat([df_desc.loc[:'std'], df_vars, df_desc.loc['min':]], axis=0)
print(df_desc_new)
结束语
本次的python
文章经验更新,饶了太大的弯儿。本来是准备更新使用各种机器学习手段分析鸢尾花数据集的。结果,更新成了dataframe
的各种不同角度的分析了。哈哈。希望尽快回归正题。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。