基尼系数简单算法_python简单计算器代码

基尼系数简单算法_python简单计算器代码用Python实现基尼系数的计算

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

参考资料:

(从文件读取数据到数组)https://blog.csdn.net/gaochen1412771148/article/details/94886847?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-9-94886847.nonecase

(基尼系数计算方法-何史提的回答)https://www.zhihu.com/question/20219466/answer/25936162

简单的说明(吐槽):

最近对基尼系数有点感兴趣,于是就基于面向百度搜索的方法(?)写了一个python计算基尼系数的小文件(手动狗头)。

读入的文件格式设置为txt,然后它里面只有一列数据。

 

完整代码:

import os
import numpy as np
import pandas as pd

file = open("gini.txt", "r")    #以只读方式从文件夹中读取一列家庭年收入的数据文档
row = file.readlines()  #读取所有行

wealths = []    #定义一个wealths数组用于存放所有的数据

#以下开始将txt文件的数据逐个输入wealths数组
for line in row:
    line = list(line.strip().split('/n'))   #strip移除字符串头尾指定的字符(默认为空格或换行符),split指定分隔符对 字符串进行切片
    for i in line:
        wealths.append(int(i))  #逐个追加入wealths数组

#打印wealths数组,看一下有没有读入数据错误
for i in range(0,len(wealths)):
    print(wealths[i])

#基尼系数计算的函数
def gini_coef(wealths):
    cum_wealths = np.cumsum(sorted(np.append(wealths, 0)))
    sum_wealths = cum_wealths[-1]
    xarray = np.array(range(0, len(cum_wealths))) / np.float(len(cum_wealths)-1)
    yarray = cum_wealths / sum_wealths
    B = np.trapz(yarray, x=xarray)
    A = 0.5 - B
    return A / (A+B)

#打印基尼系数结果
print("\n基尼系数是%f"%gini_coef(wealths))

 

 测试代码:

首先是计算绝对平均的情况

我新建了一个“绝对平均”的txt文档,里面有100行数据,每一列都是1000,代表着100人的财产都是1000元钱。在这种绝对平均的情况下,基尼系数为0。

跑一下程序,发现结果确实为0。

基尼系数简单算法_python简单计算器代码

然后是计算绝对不平均的情况

新建一个“绝对不平均”的txt文档,里面有100行数据,前99列都为0,最后一列是100000,代表着99个人的财产都被第100个人独吞了(那99个人真悲催?) 。在这种绝对不平均的情况下,基尼系数为1。

跑了一下程序,却发现结果是0.99。

基尼系数简单算法_python简单计算器代码

呃,有没有大佬告诉一下我比较可靠的原因,现在我已经将原因归到(甩锅)电脑处理浮点数运算本来就不准确这个事实了。

最后我继续模拟了几组乱序的100个不同的数据,发现也能计算出结果,不过也还是不太知道结果的可靠性强不强。

所以如果有更加可靠的验证方法,我会继续更新的(应该吧,咕咕咕)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182612.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月12日 下午11:36
下一篇 2022年10月12日 下午11:36


相关推荐

  • Jmeter正则表达式提取器获取Token-简单实例「建议收藏」

    Jmeter正则表达式提取器获取Token-简单实例「建议收藏」正则表达式提取响应数据中的Token步骤1:TestPlan下创建线程组,线程组下创建取样器->HTTP请求。上图中Login接口的Response中有用户token,该token需要在下一个需求提报的接口中使用,所以在Login下添加“正则表达式提取器”步骤2:选择Login,鼠标右键选择“添加->后置处理器->正则表达式提取器”步骤3:正则表达式…

    2025年9月4日
    10
  • 龙虾部署不求人,还附5个OpenClaw必备技能

    龙虾部署不求人,还附5个OpenClaw必备技能

    2026年3月13日
    2
  • 前端打印插件

    前端打印插件

    2021年9月16日
    51
  • 满秩矩阵与正定矩阵

    满秩矩阵与正定矩阵满秩矩阵设 A 是 n 阶矩阵 若 r A n 则称 A 为满秩矩阵 但满秩不局限于 n 阶矩阵 若矩阵秩等于行数 称为行满秩 若矩阵秩等于列数 称为列满秩 既是行满秩又是列满秩则为 n 阶矩阵即 n 阶方阵 矩阵的秩 用初等行变换将矩阵 A 化为阶梯形矩阵 则矩阵中非零行的个数就定义为这个矩阵的秩 记为 r A 根据这个定义 矩阵的秩可以通过初等行变换求得 需要注意的是 矩阵的阶梯形并不是唯一的 但是阶梯形中非零行的个数总是一致的 阶梯形矩阵 其特点为 每个阶梯只有一行 元素不全为零的行 非零行 的

    2026年3月19日
    2
  • java pdf 转 word_PDF怎么转换成Word,免费,完整的那种

    java pdf 转 word_PDF怎么转换成Word,免费,完整的那种简介PDF可以分为文字型PDF和图片型PDF,文字型PDF即可以选中文字内容的PDF,反之图片型PDF即无法选中文字的PDF,其内容实际上是图片。本文针对不同类型,介绍PDF转Word方法,可以说是目前的最优解,没有之一。文字型PDF转Word方法1-直接用Word打开优点简单方便缺点部分样式丢失,排版错位,转换并不完美部分文件会有乱码无法识别图片型PDF里的文字总结适合对样式不敏感,主要关心正文…

    2022年4月30日
    58
  • 【shell】shell脚本实战-while循环语句

    【shell】shell脚本实战-while循环语句前言上文我们讨论了for循环的使用,在有限循环里,我们使用for循环是很方便的一件事情,今天我们来探讨下while循环while循环语句的语法分析语法格式一:while[条件]do 操作done语法格式二:whilereadlinedo 操作done<file通过read命令每次读取一行文件,文件内容有多少行,while循环多少次注意:只有表达式为真,do和done之间的语句才会执行,表达式为假时,结束循环(即条件成立就一直执行循环)例如:whil

    2022年7月24日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号