上述企业财务部员工的月工资数据如下:
2050,2100,2200,2300,2350,2450,2500,2700,2900, 2850,3500,3800,2600,3000,3300,3200,4000,3100,4200,3500。
1)试用mean、median、var、sd函数求数据的均值、中位数、方差、标准差。
2)绘制该数据的散点图和直方图,应用hist函数构建自己的计量频数表函数。
3)请用自定义函数freq生成频数表和频数图。
运行截图
#(1)试用mean、median、var、std函数求数据的均值、中位数、方差、标准差。
import numpy as np
import pandas as pd
from matplotlib import pyplot, pyplot as plt
import random
# 设置全局字体(超级重要!!!!!!!!不然会有乱码)
plt.rcParams['font.family'] = 'Microsoft YaHei'
wage_list = [2050,2100,2200,2300,2350,2450,2500,2700,2900,2850,
3500,3800,2600,3000,3300,3200,4000,3100,4200,3500]
df_wage = pd.DataFrame({'工资':wage_list})
wage_mean = np.mean(wage_list)
wage_list.sort()
wage_median = np.median(wage_list)
wage_var = np.var(wage_list)
wage_std = np.std(wage_list)
print("均值:",wage_mean)
print("中位数:",wage_median)
print("方差:",wage_var)
print("标准差:",wage_std)
#(2)绘制该数据的散点图和直方图,应用hist函数构建自己的计量频数表函数。
workers = random.sample(range(1,21),20)
workers.sort()
#生成散点图
pyplot.scatter(workers,df_wage['工资'])
pyplot.xlabel('工人')
pyplot.ylabel('工资')
pyplot.title('企业财务部员工的月工资数据散点图')
pyplot.xticks(workers)
pyplot.show()
#绘制直方图
plt.hist(df_wage['工资'],density=True)
plt.xlabel('工资区间')
plt.title('企业财务部员工的月工资数据直方图' )
plt.show()
#应用hist函数构建自己的计量频数表函数
def freq(x):
H=plt.hist(x)
x = H[1][:-1]
y = H[1][1:]
f = H[0]
z = f/sum(f)*100
a = pd.DataFrame([x,y,f,z],index=['上限','下限','频数','频率'])
return(a)
freq(df_wage['工资'])
# (3)请自定义一个计量数据的频数表生成函数和频数图绘制函数。
#自定义一个计量数据的频数表生成函数
def fqc_2(x): #输入的数据类型是列表
n = pd.value_counts(x)
s = sum(n)
table_3 = pd.concat([n],axis=1)
table_3.columns = ['频数']
return table_3
plt.show()
#自定义一个频数图绘制函数
def drew_number(list):
plt.hist(list,bins=len(list), histtype='bar', rwidth=0.8, cumulative=True)
plt.xlabel('工资区间')
plt.title('企业财务部员工的月工资数据频数直方图' )
plt.show()
drew_number(wage_list)
fqc_2(wage_list)