天天看点

数据分析作业(三)复习使用pandas进行数据处理的知识点一、题目描述二、参考代码

利用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