利用Python分析自定义数据表字段(工号,姓名,性别,学历,工资,消费,存款)
- 一、题目描述
- 二、参考代码
-
- 运行环境
- 使用数据
- 参考代码
- 运行结果
这个的第二部分没有写完,先参考第一部分,有时间我会补上
一、题目描述
复习使用pandas进行数据处理的知识点。
拟建数据,进行处理及绘图。
如数据表字段(工号,姓名,性别[男/女],省份[自定义],学历[大专/本科/硕士/博士],工资[自定义金额],消费[自定义金额],存款[自定义金额])。
要求如下:
1)自定义数据及文件格式。
2)能够存取数据文件。
3)不少于3种数据处理方式(自定义常规处理方法)。
4)根据结果进行绘图(样式不能相同)。
二、参考代码
运行环境
Anconda3.X Spyder(Python 3.7)
使用数据
链接:income.xlsx
提取码:bv4g
参考代码
部分一:数据处理完整代码。
import numpy as np
import pandas as pd
#pandas读取Excel文件
income = pd.read_excel('./income.xlsx')
print(income)
#使用groupby方法拆分数据
#按学历划分
incomeGroup = income[['工资','消费','存款']].groupby(by=income['学历'])
print(incomeGroup)
print(incomeGroup.max())
#使用agg方法聚合数据
#求出incom表中工资与存款的和与均值
print(income[['工资','存款']].agg([np.sum,np.mean]))
print('使用aggregate函数:\n',income[['工资','存款']].aggregate([np.sum,np.mean]))
#求出incom表中工资总和与存款均值
print(income.agg({'工资':np.sum,'存款':np.mean}))
#求出incom表中工资总和与存款的和与均值
print(income.agg({'工资':np.sum,'存款':[np.mean,np.sum]}))
#标准化数据:离差标准化,标准差标准化,小数定标标准化数据
#离差标准化
def MinMaxScale(data):
data = (data-data.min())/(data.max()-data.min())
return data
#对工资和消费做离差标准化
'''
data1 = MinMaxScale(income['工资'])
data2 = MinMaxScale(income['消费'])
data_M = pd.concat([data1,data2],axis=1)
'''
data_M = pd.concat([MinMaxScale(income['工资']),MinMaxScale(income['消费'])],axis=1)
print(data_M.head()) #查看全部数据为print(data_M)
#标准差标准化
def StandarScaler(data):
data = (data-data.mean())/data.std()
return data
#对工资和消费做标准差标准化
'''
data1 = StandarScaler(income['工资'])
data2 = StandarScaler(income['消费'])
data_S = pd.concat([data1,data2],axis=1)
'''
data_S = pd.concat([StandarScaler(income['工资']),StandarScaler(income['消费'])],axis=1)
print(data_S.head()) #查看全部数据为print(data_M)
#小数定标标准化数据
def DecimalScaler(data):
data = data/10**np.ceil(np.log10(data.abs().max()))
return data
#对工资和消费做标准差标准化
'''
data1 = DecimalScaler(income['工资'])
data2 = DecimalScaler(income['消费'])
data_D = pd.concat([data1,data2],axis=1)
'''
data_D = pd.concat([DecimalScaler(income['工资']),DecimalScaler(income['消费'])],axis=1)
print(data_D.head()) #查看全部数据为print(data_D)
部分二:绘图
全当这里有好多代码好多图
运行结果
部分一结果部分
工号 姓名 性别 工资 消费 存款 省份 学历
0 1 李四 女 4567.151881 1644 2923.151881 H 博士
1 2 王五 女 3031.000000 1486 1545.000000 H 大专
2 3 赵六 男 5533.000000 1876 3657.000000 H 本科
3 4 刘能 男 4025.000000 989 3036.000000 H 本科
4 5 魏玉 男 5068.000000 1351 3717.000000 H 本科
5 6 赵六 女 7163.000000 1691 5472.000000 H 本科
6 7 狗蛋 男 5549.000000 1579 3970.000000 H 本科
7 8 应许 男 3814.000000 1893 1921.000000 H 本科
8 9 怪风 男 5430.000000 1939 3491.000000 H 本科
9 10 虎虎 女 3699.000000 984 2715.000000 H 本科
10 11 高黑 女 7483.000000 1146 6337.000000 H 大专
11 12 黑哥 男 5053.000000 1379 3674.000000 H 博士
12 13 胖子 女 4413.000000 849 3564.000000 H 大专
13 14 嘉祥 男 4542.000000 969 3573.000000 H 大专
14 15 随机 男 5596.000000 1950 3646.000000 H 博士
15 16 数据 男 5524.000000 1829 3695.000000 H 大专
16 17 结构 女 7363.000000 1316 6047.000000 H 大专
17 18 计算机 男 5222.000000 1394 3828.000000 J 大专
18 19 网络 女 6005.000000 1848 4157.000000 J 大专
19 20 操作 男 5473.000000 1589 3884.000000 J 大专
20 21 系统 男 6537.000000 1473 5064.000000 J 本科
21 22 机组 男 5767.000000 1082 4685.000000 J 本科
22 23 自动化 女 3621.000000 1432 2189.000000 J 本科
23 24 康恩贝 女 6399.000000 1050 5349.000000 J 本科
24 25 线代 女 6230.000000 1631 4599.000000 B 本科
25 26 邮电 女 7605.000000 1524 6081.000000 B 本科
26 27 谢希仁 女 4245.000000 1245 3000.000000 B 本科
27 28 唐朔飞 男 6142.000000 831 5311.000000 B 本科
28 29 严蔚敏 男 4958.000000 1464 3494.000000 B 本科
29 30 孙悟空 女 5731.000000 1721 4010.000000 S 本科
30 31 猪八戒 男 6511.000000 1997 4514.000000 S 本科
31 32 沙和尚 女 7460.000000 1595 5865.000000 S 本科
32 33 唐三藏 女 6713.000000 1097 5616.000000 S 本科
33 34 白龙马 男 4727.000000 1557 3170.000000 S 本科
34 35 观音 男 4191.000000 1696 2495.000000 S 本科
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000022112813B48>
工资 消费 存款
学历
博士 5596.0 1950 3674.0
大专 7483.0 1848 6337.0
本科 7605.0 1997 6081.0
工资 存款
sum 191390.151881 140294.151881
mean 5468.290054 4008.404339
使用aggregate函数:
工资 存款
sum 191390.151881 140294.151881
mean 5468.290054 4008.404339
工资 191390.151881
存款 4008.404339
dtype: float64
工资 存款
mean NaN 4008.404339
sum 191390.151881 140294.151881