前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据分析 | 9年间各省市平均收入分析

数据分析 | 9年间各省市平均收入分析

作者头像
朱小五
发布2020-03-06 16:10:33
5490
发布2020-03-06 16:10:33
举报
文章被收录于专栏:凹凸玩数据凹凸玩数据

↑ 关注 + 星标 ~ 有趣的不像个技术号

每晚九点,我们准时相约

各省市平均工资怎么样?

你每年调薪百分之多少才不低于平均值?

9年时间可以有多大的发展差距?

预测2019年各省市人平均收入应该是多少?

这篇文章告诉你!

今天逛kaggle看到一个数据集[1],其中有一部分是一个叫做income的表格文档。虽然最后的数据是2017年,但也值得研究一下。嗯,拿来捋一捋。

这次分析用到pandas、matplotlib 以及一些分析思路,比较浅显求评论区多指教。

信息概览

拿到一个陌生的文档第一步是先粗略的看一下,用到以下代码

代码语言:javascript
复制
dtincome=pd.read_excel('income.xls')
print(dtincome.shape)
dtincome.info()

输出结果如下:31行10列;1列地区area,9列年份,没有空值;使用2.5+kB内存

代码语言:javascript
复制
(31, 10)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 31 entries, 0 to 30
Data columns (total 10 columns):
area 31 non-null object
2017 31 non-null int64
2016 31 non-null int64
2015 31 non-null int64
2014 31 non-null int64
2013 31 non-null int64
2012 31 non-null int64
2011 31 non-null int64
2010 31 non-null int64
2009 31 non-null int64
dtypes: int64(9), object(1)
memory usage: 2.5+ KB

通过head函数查看的本表头部信息如下:按地区、年代展示了收入数据

但这个数据表没有明说这个表是什么,看样子理解是人均年收入?拿北京的搜索验证一下,得到的答案是:北京职工年平均工资。

看上边头部信息那个表,因为索引列是编号,为了方便,我想改为area为索引列,那么需要用函数转化一下:得到图的图如下,修改了哪里可以与上边图对比一下首列(没了01234)。

代码语言:javascript
复制
dtincome=dtincome.set_index('area')
dtincome.head()

分析部分

上边的数据概览跟索引列设置完了,下边开始一些简单分析

2017年收入排序

我想取出2009,2017年数据,按照2017数据降序排列,然后做柱状图

代码语言:javascript
复制
x=dtincome[2009].sort_values(ascending=False)
y=dtincome[2017].sort_values(ascending=False)
plt.figure(figsize=(16,9))

total_width, n = 0.8, 2
width = total_width / n

plt.bar(dtincome.index, y, width=2*width,label='2017',color='#334252')
plt.bar(dtincome.index, x,  width=width, label='2009', color='#fd5f00')

plt.legend()

plt.ylabel('单位:元')
plt.xlabel('省,直辖市')
plt.xticks(rotation=80, fontsize=14)
plt.savefig('2017降序bar.png')
plt.show()

通过这张图可以看到:北京、上海、西藏、天津人均收入居全国之首,但跟我认知不一样,西藏这么高呀,广东没在前面?

针对西藏再google一下找到一个链接。

http://finance.china.com.cn/news/20191030/5109469.shtml

31省市前三季居民收入榜单:京沪突破5万元 西藏增速第一,看来数据没得问题。

此外下图2009年原本最低的江西、海南等,也不再垫底。

青海贵州也是名列前茅。

极差值

那么2017年最高的北京和最低的河南差多少呢?

代码语言:javascript
复制
dtincome.max()-dtincome.min()

2017年最高的北京市比最低的河南省差了78997元。往年极差数据如上。

9年净增加额

现在想知道一下两个数据:

1. 每个省市自身9年间增加了多少收入?

2. 如果以2009年为基数,增长率是多少?

代码语言:javascript
复制
addnum=dtincome[2017]-dtincome[2009]  # 增长数字计算
dtincome.insert(0,'addnum',addnum)    # 将计算数字加入首列
dtincome.head(10)                     # 展示头部信息

通过得到的addnum列可以看到9年间收入都是翻了一番的。所以增长率应该是大于1,以北京、河南为例计算:

代码语言:javascript
复制
add_rate_bj=dtincome.loc['北京市']['addnum']/dtincome.loc['北京市'][2009]
add_rate_hn=dtincome.loc['河南省']['addnum']/dtincome.loc['河南省'][2009]
print(add_rate_hn)
print(add_rate_bj)

1.32

1.05

结果显示,北京九年增长了1.32倍,河南省增长了1.05倍。

但这个衡量指标不够完善,我们知道收入增加都是在往年基础上更进一步的,就像调工资都是以之前工资水准上调,不会一直以入司时候公司为基数,所以想算一下9年的复增长率,这个指标就像存钱的复利。

复利率计算

复利公式 :F=P*(1+i)^n

利率公式:i=(F/P)^1/n-1

在这里p相当于2009年的收入,F相当于2017年收入,n为8年

代码语言:javascript
复制
i_bj=(pow(dtincome.loc['北京市'][2017]/dtincome.loc['北京市'][2009],1/8)-1)*100
i_hn=(pow(dtincome.loc['河南省'][2017]/dtincome.loc['河南省'][2009],1/8)-1)*100

print('北京市8年复利:%.3f ' % i_bj)
print('北京市8年复利:%.3f ' % i_hn)

计算结果是:北京市8年复利:11.104 ;河南省8年复利:9.367

北京基数大,增长率也高;河南基数小,增长率也小于北京。

也就是过去9年如果你都在上班,工资每年调薪10%才满足正常水平。

复利率全部计算一遍

现在想把所有省市的增长复利率都计算一遍,并加入原表,所以需要写一个函数方便计算,整体代码如下:

代码语言:javascript
复制
# 先想办法取到area作为列表
province=list(dtincome.index)

# 定义计算函数
def fuli_i(future,now,year):
    return (pow(future/now,1/year)-1)*100
# 计算的i存列表
fuli_i_list=[]
for z in province:
    future=dtincome.loc[z][2017]
    now=dtincome.loc[z][2009]
    i=fuli_i(future,now,8)
    fuli_i_list.append(i)
# 打印看看
print(fuli_i_list)

通过上边代码跑出数据如下:OK,成功了。

代码语言:javascript
复制
[11.104060121135761, 10.07405428410808, 10.96948932120323, 10.11699074109298, 10.38839823219011, 9.124444064311987, 11.554847909745991, 10.735531812575317, 9.43918486872537, 10.493957164921696, 10.42016967823416, 10.914307419581725, 11.611272768884827, 12.434260050070067, 11.179048603584052, 9.367185582178106, 12.118485437358494, 11.673351814934364, 10.364474505013742, 11.260148139091243, 13.58105530869107, 11.367474245793607, 12.179151115437591, 13.003995739791186, 13.34245416624098, 11.39070340256878, 10.569453392495465, 11.671400047653036, 10.854454505533129, 9.947441194548222, 11.9848334119395]

既然成功了,那就加入原表首列

代码语言:javascript
复制
dtincome.insert(0,'fuli_i',fuli_i_list)
dtincome.head(5)

可以看到,最大增加率13%,最小9.12% ,50%分位数是11.1%,也就是50%的人工资增长率在11%以上 。

最后做个图展示一下

可以看到9年下来,海南省增长速度最高,年平均增长13.58%,辽宁最低9.12%。我大中华发展真是太猛了!

最后一点就是,这是工资平均增速,所以,你拖后腿了么......

为了验证是否拖后腿,继续再写一部分

2019平均工资预测

验证思路:用这9年算出的年增长率(fuli_i那列)来测算一下2019年各个省市的平均工资吧,如果出乎意料,请看下方分析。

还是那句话:Show you my code

代码语言:javascript
复制
# 复利公式:F=P*(1+i)^n  参照这个公式定义函数
def prelook(now,i,year):
    return now*((1+i)**year)

# 拿到2019预测值
wage2019=[]
for z in prov:
    now=dtincome.loc[z][2017]
    i =dtincome.loc[z]['fuli_i']/100  #换算回小数
    wage=prelook(now,i,2)
    wage2019.append(int(wage))  #与之前的统一格式,取整
# 插入表格
dtincome.insert(0,'2019',wage2019)

# 作图
x=dtincome['2019'].sort_values(ascending=False)
plt.figure(figsize=(16,9))
x.plot(kind='bar')
plt.ylabel('单位:元')
plt.xlabel('省,直辖市')
plt.savefig('2019降序bar.png')
plt.show()

计算结果是预测北京2019年人均收入166638元/年,平均13886元/月;河南5581元/月。

跟下图这个预测稍有差距[2]。

各省市的大家可以自己对照。

分析差异原因有两点:

  1. 2018-2019两年经济形势不好,所以用前9年增长率保持不变来预测2019年工资会导致偏高。
  2. 年收入包括奖金、各类补助补贴的合计值,并不是月薪*12这么简单。
  3. 社会上28定律导致财富不均衡。
  4. 这个数据集本身准不准并没有验证。
  5. 工资这事,冷暖自知,比如这图。

解释一大堆就是。。。我拖后腿了,严重的、病入膏肓的。

欢迎关注公众号:SUMER

参考来源:

  1. ^kaggle数据集https://www.kaggle.com/tduan007/china-marriage-and-divorce-data#income.xls
  2. https://www.xinchou.com/AverageWage/110000/2019
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 凹凸数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 信息概览
  • 分析部分
  • 2019平均工资预测
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档