基尼系数简单算法_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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • bitblt函数 透明底图_手绘楼盘摆位图怎么画

    bitblt函数 透明底图_手绘楼盘摆位图怎么画CDC::BitBlt函数,应用在GDI的绘图中,有时候我们需要显示的位图有一部分是透明的,例如在棋类游戏中,棋盘图片和棋子图片融合的时候,棋子边缘应该是透明。    在图1中,棋盘和棋子图片融合在一起,需要设置棋子图片边缘的“品红色”为透明。     1、BitBlt函数说明:        BOOLBitBlt(intx,int

    2022年10月19日
    5
  • mongo 慢查询配置

    mongo 慢查询配置mongo 慢查询配置

    2022年4月24日
    48
  • Java字符串匹配_获取字符串

    Java字符串匹配_获取字符串文章目录一、示例二、解释1.replace()方法2.replaceAll()方法3.replaceFirst()方法4.常用的字符列表一、示例如图,都是为了替换字符串s中的”(“符号,但三种匹配方法,有三种不同的效果及写法。二、解释1.replace()方法replace()方法没有用到正则表达式,但会匹配所有的参数并进行替换2.replaceAll()方法replaceAll()方法使用的是正则表达式来匹配,而括号在正则表达式中是特殊字符,所以需要用双斜杠来进行转义,同时会匹配所..

    2022年8月21日
    6
  • 汉字到底占几个字节丨C「建议收藏」

    汉字到底占几个字节丨C「建议收藏」首先需要注意汉字所占字节数,与语言没有关系,是与其使用的字符集的编码方式有关验证方法1.把下面代码保存到一个文本文体中#include#includeintmain(){char*a=”我”;printf(“%d”,strlen(a));return0;}复制代码2.在终端中

    2022年6月26日
    35
  • 基于单片机的空气质量检测系统设计_单片机有难度毕业设计

    基于单片机的空气质量检测系统设计_单片机有难度毕业设计实物链接:基于单片机的空气质量检测-实物设计软件安装:Keil:点击下载 Proteus:点击下载 AD:点击下载 Visio:点击下载设计简介:本设计是基于单片机的空气质量检测设计,主要实现以下功能:可实现通过SGP30测量二氧化碳及甲醛浓度,当超过设置的最大值时,进行报警及通风和净化空气处理 可实现通过MQ-4测量甲烷浓度,当超过设置的最大值时,进行报警及通风和净化空气处理 可实现通过GP2Y10测量5浓度,当超过设置的最大值时,进行报警及通风和净化空气处理 可实现通过

    2022年10月3日
    3
  • zabbix 监控介绍「建议收藏」

    zabbix 监控介绍「建议收藏」一、监控介绍你用过哪些监控软件?zabbix和nagios、cacti、ganglia有什么区别?zabbix有那些好处?zabbix的监控流程是什么?zabbix常见监控项有那些?1、CactiCacti是一套基于PHP、MySQL、SNMP及RRDTool开发的监测图形分析工具,Cacti是使用轮询的方式由主服务器向设备发送数据请求来获取设备上状态数据信息的,如果设备不断增多,这个轮询的过程就非常的耗时,轮询的结果就不能即时的反应设备的状态

    2022年4月28日
    79

发表回复

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

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