大家好,今天来为大家解答以下问题,python数据处理案例步骤及其代码,python数据处理与分析教程,今天让我们一起来看看吧!
目录
1、实验一
1.1、题目总览
1.2、代码解析
2、实现二
2.1、题目总览
2.2、代码解析
3、实验三
3.1、题目总览
3.2、代码解析
4、实验四
3.1、题目总览
3.2、代码解析
哈喽~今天学习记录的是数据分析实训小案例。
就用这个案例来好好巩固一下 python 数据分析三剑客用python画小猫。
前期准备:
- 确认 Jupyter Notebook 环境
- 准备实验数据:http://qn.yuanxinghua.love/%E5%AE%9E%E9%AA%8C.zip
1、实验一
1.1、题目总览
1.2、代码解析
1.求3+6+9+12+15= ?
2.生成范围在0~1、服从均匀分布的10行5列的数组
3.创建一个数值范围为0~1,间隔为0.01的数组
4.创建100个服从正态分布的随机数
5.对创建的两个数组进行四则运算
6.对创建的随机数进行简单的统计分析
2、实现二
2.1、题目总览
2.2、代码解析
1.读取mtcar数据
截图:
2.查看mtcar数据集的元素的个数、维度、大小等信息,输出表的列名
3.使用describe方法对整个mtcar数据集进行描述性统计
4.计算不同cyl(气缸数)、carb(化油器)对应的mpg(油耗)和hp(马力)的均值
5.输出mpg和hp前5个元素
6.输出mtcar数据的前3行元素
7.使用head()和tail()方法输出前后5行数据
8.用loc和iloc分别提取第1列和第3列的数据
9.取出列名为mpg、hp,行名为2,3,4的数据
10.取出列位置为2和4,行位置为5,6,7的数据
11.取出列位置为3,行名为2-6的数据
12.新增1列,名称为abc(abc=mpg+hp),输出前5行数据
13.删除前两行数据
14.删除abc列
3、实验三
3.1、题目总览
3.2、代码解析
1.使用如下方法规范化数组:200,300,400,600,1000
- 先将所给的一组数取绝对值,找出这组数中绝对值最大的数,然后,利用对数+向上取整来确定10的次方。np.abs()
- ①numpy库中有ceil()函数,表示向上取整。np.ceil()
- ②numpy库中log10()用于计算一个数以10为底数,对应的值是多少。np.log10()
2.12个销售价格记录如下:5,10,11,13,15,35,50,55,72,92,204,215。使用等宽法对其进行离散化处理(分3类)
3.自定义一个能够自动实现数据去重、缺失值中位数填补的函数。自行定义测试数据进行验证
- drop_duplicates() 删除重复的行
- x.median() 中值
- x.fillna() 将缺失值替换为该值 x.fillna(0) ==> 将缺失值替换为 0
- inplace = True 在原数组上操作
4、实验四
3.1、题目总览
3.2、代码解析
1.用plot方法画出x在(0,10)间cos的图像
运行截图:
2.用scatter方法画出x在(0,10)间sin的点图像
运行截图:
3.绘制一个高分别为3,1,4,5,8,9,7,2,X轴上值为A,B,C,D,E,F,G,H的柱状图
运行截图:
4.人口数据总共拥有6个特征,分别为年末总人口、男性人口、女性人口、城镇人口、乡村人口和年份。查看各个特征随着时间推移发生的变化情况可以分析出未来男女人口比例、城乡人口变化的方向。使用NumPy库读取人口数据。创建画布,并添加子图。在两个子图,上分别绘制散点图和折线图。保存,显示图片。分析未来人口变化趋势
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# ==========读取文件========================
data = np.load('D:\桌面\populations.npz',allow_pickle=True)
# print(type(data)) # class 'numpy.lib.npyio.NpzFile'>
# data.files # npz结尾的数据集是压缩文件,里面还有其他的文件 可用 data.files 进行查看 ['data', 'feature_names']
# print(data['data'])
# print(data['feature_names'])
# ['时间' '年末总人口(万人)' '男性人口(万人)' '女性人口(万人)' '城镇人口(万人)' '乡村人口(万人)']
# =========处理数据==========================
# 去除缺失值 print(data['data'][:-2])
new_data = np.delete(data['data'],[-1,-2], 0) # [-1,-2] 要删除的行 删除第 -1 行 和 第-2 行
y = new_data
# print(y)
# numpy 选取二维数组 ==> 转为一维 ==> 逆序取值 [-1::-1] 字符串 逆序 取值 不自动实现 排大小功能
y1 = y[:,:1][:,0][-1::-1] # 时间
y2 = y[:,1:2][:,0][-1::-1] # 年末总人口
y3 = y[:,2:3][:,0][-1::-1] # 男性人口
y4 = y[:,3:4][:,0][-1::-1] # 女性人口
y5 = y[:,4:5][:,0][-1::-1] # 城镇人口
y6 = y[:,5:6][:,0][-1::-1] # 乡村人口
# print(y1)
#y1 = y[:,:1][:,0]
x = y1
# x = x[-1::-1]
# print(y2)
# ===创建一个空白画布===
fig = plt.figure( figsize=(22,26) )
# ===创建一个子图===
ax1 = fig.add_subplot(2,1,1) # 位置: 2行1列 第1个
# ==============散点图===================================
line1 = ax1.scatter(x,y2)
line2 = ax1.scatter(x,y3)
line3 = ax1.scatter(x,y4)
line4 = ax1.scatter(x,y5)
line5 = ax1.scatter(x,y6)
plt.legend(handles=[line1,line2,line3,line4,line5],
labels=['年末总人口(万人)','男性人口(万人)','女性人口(万人)','城镇人口(万人)','乡村人口(万人)'], loc='best')
# ===创建一个子图===
ax2 = fig.add_subplot(2,1,2) # 位置: 2行1列 第2个
# ==============折线图====================================
line11, = ax2.plot(x,y2)
line22, = ax2.plot(x,y3)
line33, = ax2.plot(x,y4)
line44, = ax2.plot(x,y5)
line55, = ax2.plot(x,y6)
plt.legend(handles=[line11,line22,line33,line44,line55],
labels=['年末总人口(万人)','男性人口(万人)','女性人口(万人)','城镇人口(万人)','乡村人口(万人)'], loc='best')
# =====保存图片===========
plt.savefig('1996-2015年人口数据各个特征随时间推移的变化情况图') # 保存在当前路径下
# =====在本机显示图片=====
plt.show()
# ============问题=========================
# 之前会报错: A proxy artist may be used instead. ==>
# 原因: plt.plot( )返回的是一个二元组值,若要获取实例,必须用x, = plt.plot( )才能取出来实例对象
运行截图:
5.通过绘制各年份男女人口数目及城乡人口数目的直方图,男女人口比例及城乡人口比例的饼图可以发现人口结构的变化
运行截图:
# =====各年份男女人口比例及城乡人口比例的饼图
'''
y1 = y[:,:1][:,0][-1::-1] # 时间
y3 = y[:,2:3][:,0][-1::-1] # 男性人口
y4 = y[:,3:4][:,0][-1::-1] # 女性人口
y5 = y[:,4:5][:,0][-1::-1] # 城镇人口
y6 = y[:,5:6][:,0][-1::-1] # 乡村人口
'''
# ===创建一个空白画布===
fig = plt.figure( figsize=(20,16) )
explode = (0.02,0.02)
# =====各年份男女人口数目饼图
labels = ['男性人口','女性人口']
labels1 = ['城镇人口','乡村人口']
v = [
[y3[0],y4[0]],
[y3[1],y4[1]],
[y3[-2],y4[-2]],
[y3[-1],y4[-2]],
]
v1 = [
[y5[0],y6[0]],
[y5[1],y6[1]],
[y5[-2],y6[-2]],
[y5[-1],y6[-2]],
]
# 男女人口数目饼图
ax5 = fig.add_subplot(2,4,1)
plt.pie(v[0],labels= labels, explode=explode, autopct='%1.1f%%')
plt.tick_params(labelsize=12)
plt.title('1996年男女人口数饼图')
ax6 = fig.add_subplot(2,4,2)
plt.pie(v[1],labels= labels, explode=explode, autopct='%1.1f%%')
plt.tick_params(labelsize=12)
plt.title('1997年男女人口数饼图')
ax7 = fig.add_subplot(2,4,3)
plt.pie(v[-2],labels= labels, explode=explode, autopct='%1.1f%%')
plt.tick_params(labelsize=12)
plt.title('2014年男女人口数饼图')
ax8 = fig.add_subplot(2,4,4)
plt.pie(v[-1],labels= labels, explode=explode, autopct='%1.1f%%')
plt.tick_params(labelsize=12)
plt.title('2015年男女人口数饼图')
# 城乡人口数目饼图
ax9 = fig.add_subplot(2,4,5)
plt.pie(v1[0],labels= labels1, explode=explode, autopct='%1.1f%%')
plt.tick_params(labelsize=12)
plt.title('1996年城乡人口数饼图')
ax10 = fig.add_subplot(2,4,6)
plt.pie(v1[1],labels= labels1, explode=explode, autopct='%1.1f%%')
plt.tick_params(labelsize=12)
plt.title('1997年城乡人口数饼图')
ax11 = fig.add_subplot(2,4,7)
plt.pie(v1[-2],labels= labels1, explode=explode, autopct='%1.1f%%')
plt.tick_params(labelsize=12)
plt.title('2014年城乡人口数饼图')
ax12 = fig.add_subplot(2,4,8)
plt.pie(v1[-1],labels= labels1, explode=explode, autopct='%1.1f%%')
plt.tick_params(labelsize=12)
plt.title('2015年城乡人口数饼图')
# =====保存图片===========
plt.savefig('1996,19967,2014,2015年男女人口比例及城乡人口比例的饼图')
plt.show()
运行截图:
ok`----- 小案例到这里就结束啦~