#导入相关包
import numpy as pd
import pandas as pd
import matplotlib.pyplot as plt
#读取文件
data = pd.read_excel(r"C:\Users\Administrator\Desktop\北京积分落户公布信息.xlsx")
data_2018
#显示前五条信息
data_2018 = data[['姓名','工作单位','积分分值','年龄']]
data_2018.head()
#展示一些基本信息
data_2018.describe()
公司分布
#按公司分组并计算每组个数
company_data = data_2018.groupby('工作单位',as_index=False).count()[['工作单位','姓名']]
company_data
#重命名列
company_data.rename(columns={'姓名':'人数'},inplace=True)
#人数降序排列
company_data = company_data.sort_values('人数',ascending=False)
#人数排名前十
company_data.head(10)
#画图
from pylab import * #支持中文
mpl.rcParams['font.sans-serif'] = ['SimHei']
from matplotlib import font_manager
plt.figure(figsize=(20,8),dpi=80)
x = company_data.head(10)['工作单位'].to_list()
y = company_data.head(10)['人数'].to_list()
plt.barh(x,y)
plt.xlabel('人数')
plt.ylabel('公司')
plt.legend()
plt.show()
#人数所占比例
print('前50公司人数所占比例: {:.2%}'.format(company_data.head(50)['人数'].sum()/6019))
#公司所占比例
print('前50公司所占比例: {:.2%}'.format(50/company_data['工作单位'].count()))
积分分布
#按照步长为5分箱统计
bins = np.arange(90,130,5)
bins = pd.cut(data_2018['积分分值'],bins)
bin_counts = data_2018['积分分值'].groupby(bins).count()
bin_counts
#处理index
bin_counts.index = [str(x.left) + '~' + str(x.right) for x in bin_counts.index]
#画图
plt.figure(figsize=(20,8),dpi=80)
bin_counts.plot(kind='bar',alpha=1,rot=45)
plt.show()
年龄分布
#按步长为5分箱统计
bins = np.arange(30,60,5)
bins = pd.cut(data_2018['年龄'],bins)
age_counts = data_2018['年龄'].groupby(bins).count()
age_counts
#35-45岁年龄所占比例
age_percent = data_2018[data_2018['年龄']<=45][data_2018['年龄']>=35]['姓名'].count()/data_2018['姓名'].count()
print('35-45岁年龄所占比例:{:.2%}'.format(age_percent))
#画图
age_counts.index = [str(x.left) + '~' + str(x.right) for x in age_counts.index]
plt.figure(figsize=(20,8),dpi=80)
age_counts.plot(kind='bar',alpha=1,rot=0)
plt.show()
通过SPSS曲线估计得到2018年的方程是y=124.28-3.58lnx,2019年的方程是y=126.245-3.626lnx
#y=124.28-3.58lnx——2018
import math
def function(x):
y=124.28-3.58*math.log(x,math.e)
return y
#y=126.245-3.626lnx----2019
def func(x):
y=126.245-3.626*math.log(x,math.e)
return y
func(6000)