大数据可视化技术(1):调查数据。某公司对财务部门人员是否抽烟进行调查,结果为:否,否,否, 是,是,否,否,是,否,是,否,否,是,是,否,是,否,否,是,是。

1、调查数据。某公司对财务部门人员是否抽烟进行调查,结果为:否,否,否, 是,是,否,否,是,否,是,否,否,是,是,否,是,否,否,是,是。

1)请用value_count函数统计人数,并绘制条图,按颜色区分是否。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import scipy.stats as st

df_1 = pd.DataFrame({'是否':['否','否','否','是','是','否','否','是','否','是','否','否','是','是','否','是','否','否','是','是']})
df_a=df_1['是否'].value_counts()
print(df_1['是否'].value_counts())
print('总数:{}'.format(df_1['是否'].count()))

plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.xticks(range(2),['是','否'],fontsize=14)

x=range(len(df_a))
plt.bar(x=x,height=df_a,width=0.6,alpha=0.5, color=['blue', 'red'])
plt.ylim([0,13])
plt.title("某公司财务部门人员是否抽烟调查",fontsize=15)

for x,y in enumerate(df_a):
    plt.text(x,y+0.8,'%s' %round(y,1),ha='center',fontsize=13)

plt.show()

2)请用自定义函数tab生成频数表和频数图。

2、工资数据。上述企业财务部员工的月工资数据如下:

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生成频数表和频数图。

import pandas as pd
import matplotlib.pyplot as plt

# 设置全局字体(超级重要!!!!!!!!不然会有乱码)
plt.rcParams['font.family'] = 'Microsoft YaHei'

# 数据处理
str_data = "2050,2100,2200,2300,2350,2450,2500,2700,2900,2850,3500,3800,2600,3000,3300,3200,4000,3100,4200,3500"
data_list = str_data.split(",")
df = pd.DataFrame(data_list, dtype='float')

# 均值、中位数、方差、标准差
mean_value = df[0].mean()
median_value = df[0].median()
variance_value = df[0].var()
std_deviation = df[0].std()

print("Mean:", mean_value)
print("Median:", median_value)
print("Variance:", variance_value)
print("Standard Deviation:", std_deviation)

# 绘制散点图
workers = list(range(1, len(df) + 1))
plt.scatter(workers, df[0])
plt.xlabel('工人')
plt.ylabel('工资')
plt.title('企业财务部员工的月工资数据散点图')
plt.xticks(workers)
plt.show()

# 绘制直方图
plt.hist(df[0], bins=len(df), density=True)
plt.xlabel('工资区间')
plt.ylabel('频率')
plt.title('企业财务部员工的月工资数据直方图')
plt.show()

# 自定义计量数据的频数表生成函数
def frequency_table(data):
    freq_counts = pd.value_counts(data)
    freq_table = pd.DataFrame(freq_counts, columns=['频数'])
    return freq_table

# 自定义频数图绘制函数
def plot_frequency(data):
    plt.hist(data, bins=len(data), histtype='bar', rwidth=0.8)
    plt.xlabel('工资区间')
    plt.ylabel('频数')
    plt.title('企业财务部员工的月工资数据频数直方图')
    plt.show()

# 示例数据
wage_list = [2050, 2100, 2200, 2300, 2350, 2450, 2500, 2700, 2900, 2850, 3500, 3800, 2600, 3000, 3300, 3200, 4000, 3100, 4200, 3500]

# 调用自定义函数生成频数表和频数图
freq_table = frequency_table(wage_list)
print(freq_table)

plot_frequency(wage_list)

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值