亲爱的朋友们,今天我们要探讨,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 环境预备实行数据:
1、实行一
1.1、标题总览
1.2、代码解析
1.求3+6+9+12+15= ?
- import numpy as np
- s = np.array([3,6,9,12,15])
- (s)
复制代码 2.生成范围在0~1、服从匀称分布的10行5列的数组
3.创建一个数值范围为0~1,隔断为0.01的数组
- arry1 = np.arange(0,1,0.01)
- print(arry1)
复制代码 4.创建100个服从正态分布的随机数
- arry2 = n(100)
- print(arry2)
复制代码 5.对创建的两个数组举行四则运算
- arry1 = np.arange(0,1,0.01)
- arry2 = n(100)
- print("加法",arry1 + arry2)
- print("减法",arry1 - arry2)
- print("乘法",arry1 * arry2)
- print("除法",arry1 / arry2)
复制代码 6.对创建的随机数举行简单的统计分析
- arry2 = n(100).reshape(5,20)
-
- print('排序\n',(arry2))
- print('数据去重\n',np.unique(arry2))
- print('数组求总和\n',(arry2))
- print('数组纵轴和\n',(arry2,axis = 0))
- print('数组横轴和\n',(arry2,axis = 1))
- print('数组均值\n',(arry2))
- print('数组纵轴均值\n',(arry2,axis = 0))
- print('数组横轴均值\n',(arry2,axis = 1))
- print('数组标准差\n',(arry2))
- print('数组纵轴标准差\n',(arry2,axis = 0))
- print('数组横轴标准差\n',(arry2,axis = 1))
- print('方差\n',(arry2))
- print('最小值\n',(arry2))
- print('最大值\n',(arry2))
复制代码
2、实现二
2.1、标题总览
2.2、代码解析
1.读取mtcar数据
- import pandas as pd
- data = pd.read_csv("D:\桌面")
- data
复制代码 截图:
2.检察mtcar数据集的元素的个数、维度、大小等信息,输出表的列名
- print('所有值为:\n',data.values)
- print('索引:\n',data.index)
- print('类型为:\n',data.dtypes)
- print('元素个数为:',)
- print('维度为:',)
- print('大小为:',data.shape)
- print('表的列名:\n',data.columns)
复制代码 3.利用describe方法对整个mtcar数据集举行描述性统计
4.盘算不同cyl(气缸数)、carb(化油器)对应的mpg(油耗)和hp(马力)的均值
- a = [:,['cyl','carb','mpg','hp']]
- b = a.groupby(['cyl','carb']).mean()
- b
复制代码 5.输出mpg和hp前5个元素
6.输出mtcar数据的前3行元素
7.利用head()和tail()方法输出前后5行数据
- print('前5行元素为:\n',())
- print('==================')
- print('后5行元素为:\n',())
复制代码 8.用loc和iloc分别提取第1列和第3列的数据
- print([:,['mpg','disp']])
- print('**---------------***-------------**')
- print([:,[1,3]])
复制代码 9.取出列名为mpg、hp,行名为2,3,4的数据
- e = [2:4,['mpg','hp']] # loc[索引/条件,名称/]
- print(e)
复制代码 10.取出列位置为2和4,行位置为5,6,7的数据
11.取出列位置为3,行名为2-6的数据
- j = [2:6,['disp']]
- print(j)
复制代码 12.新增1列,名称为abc(abc=mpg+hp),输出前5行数据
- data['abc'] = data['mpg'] + data['hp']
- ()
复制代码 13.删除前两行数据
- print('原数据长度:',len(data))
- (labels=range(0,2),axis=0,inplace=True)
- print('删除后长度:',len(data))
复制代码 14.删除abc列
- data['abc'] = data['mpg'] + data['hp']
- print('增加 abc 列后:\n',data.columns)
- print('****************************************')
- (labels='abc',axis=1,inplace=True)
- print('删除 abc 列后:\n',data.columns)
复制代码 3、实行三
3.1、标题总览
3.2、代码解析
1.利用如下方法规范化数组:200,300,400,600,1000
离差尺度化尺度差尺度化小数定标尺度化 先将所给的一组数取绝对值,找出这组数中绝对值最大的数,然后,利用对数+向上取整来确定10的次方。() ①numpy库中有ceil()函数,表现向上取整。()②numpy库中log10()用于盘算一个数以10为底数,对应的值是多少。np.log10()
- import numpy as np
- import pandas as pd
- arry = np.array([200,300,400,500,600,1000])
- print('原数组:\n',arry)
- # mean 均值 sta 标准差
- def result(x):
- x1 = (x - x.min())/(x.max() - x.min()) # 离差
- x2 = (x - x.mean()()) # 标准差
- x3 = x/10**(np.log10((x).max())) # 小数
- return x1,x2,x3
- print('离差:\n',result(arry)[0])
- print('标准差:\n',result(arry)[1])
- print('小数:\n',result(arry)[2])
复制代码 2.12个销售价格纪录如下:5,10,11,13,15,35,50,55,72,92,204,215。利用等宽法对其举行离散化处置惩罚(分3类)
- price = np.array([5,10,11,13,15,35,50,55,72,92,204,215])
- (price,3) # 精度默认为 3
复制代码 3.自界说一个能够主动实现数据去重、缺失值中位数弥补的函数。自行界说测试数据举行验证
drop_duplicates() 删除重复的行x.median() 中值x.fillna() 将缺失值替换为该值 x.fillna(0) ==> 将缺失值替换为 0inplace = True 在原数组上操作
- def test(x):
- x.drop_duplicates(inplace = True)
- x.fillna(x.median(),inplace = True)
- return(x)
- arr = pd.DataFrame(
- {
- 'a':['1','2']*2,
- 'b':['1','2']*2,
-
- }
- )
- print('============去重前的数组===================')
- print(arr)
- print('============去重===================')
- print(test(arr))
- print('============去重后的数组===================')
- print(arr)
复制代码 4、实行四
3.1、标题总览
3.2、代码解析
1.用plot方法画出x在(0,10)间cos的图像
- import numpy as np
- from matplotlib import pyplot as plt
-
- x = np.arange(0,10,0.1)
- y = (x)
- plt.xlabel('X')
- plt.ylabel('Y')
- (x,y) # 折线图
- ()
复制代码 运行截图:
2.用scatter方法画出x在(0,10)间sin的点图像
- x1 = np.arange(0,10,0.2)
- y1 = (x1)
- plt.xlabel('X')
- plt.ylabel('Y')
- plt.scatter(x1,y1) # 散点图
- ()
复制代码 运行截图:
3.绘制一个高分别为3,1,4,5,8,9,7,2,X轴上值为A,B,C,D,E,F,G,H的柱状图
- x2 = [1,2,3,4,5,6,7,8]
- y2 = [3,1,4,5,8,9,7,2]
- label=['A','B','C','D','E','F','G','H']
- # 用来显示中文字符 不加中文显示 会报错
- plt.rcParams['-serif'] = ['SimHei']
-
- plt.title('柱状图')
- plt.xlabel('X')
- plt.ylabel('Y')
- p = (x2,y2,tick_label = label) # 柱状图
- _label(p,labels=y2,padding=0.2) # 为条形图添加数据标签
- ()
复制代码 运行截图:
4.生齿数据总共拥有6个特征,分别为年末总生齿、男性生齿、女性生齿、城镇生齿、乡村生齿和年份。检察各个特征随着时间推移发生的变革情况可以分析出将来男女生齿比例、城乡生齿变革的方向。利用NumPy库读取生齿数据。创建画布,并添加子图。在两个子图,上分别绘制散点图和折线图。保存,表现图片。分析将来生齿变革趋势
- import numpy as np
- from matplotlib import pyplot as plt
- plt.rcParams['-serif'] = ['SimHei'] # 用来正常显示中文标签
- plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
- # ==========读取文件========================
- data = ('D:\桌面\',allow_pickle=True)
-
- # print(type(data)) # class '.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, = (x,y2)
- line22, = (x,y3)
- line33, = (x,y4)
- line44, = (x,y5)
- line55, = (x,y6)
- plt.legend(handles=[line11,line22,line33,line44,line55],
- labels=['年末总人口(万人)','男性人口(万人)','女性人口(万人)','城镇人口(万人)','乡村人口(万人)'], loc='best')
- # =====保存图片===========
- plt.savefig('1996-2015年人口数据各个特征随时间推移的变化情况图') # 保存在当前路径下
- # =====在本机显示图片=====
- ()
- # ============问题=========================
- # 之前会报错: A proxy artist may be used instead. ==>
- # 原因: ( )返回的是一个二元组值,若要获取实例,必须用x, = ( )才能取出来实例对象
复制代码 运行截图:
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=(22,26) )
- # ===新建一个子图=== =====各年份男女人口数目直方图
- ax3 = fig.add_subplot(3,1,1)
- plt.title("1996-2015年男女人口数目直方图")
- plt.xlabel('年份')
- plt.ylabel('人口数目(万人)')
- new_x = np.arange(len(y1))
- man_y = y3
- woman_y = y4
- c_y = y5
- x_y = y6
- pb1 = (new_x - 0.2,man_y,width=0.4) # 柱状图
- pb2 = (new_x + 0.2,woman_y,width=0.4)
- _label(pb1,labels=man_y,padding=0.2) # 每个条块加上其值
- _label(pb2,labels=woman_y,padding=0.2)
- plt.legend(['男', '女'], loc='best')
-
- plt.xticks(ticks= new_x, labels= y1) # ticks: x轴刻度的列表集合 labels:用文本或其他来代替刻度的值
- # ===新建一个子图=== ======各年份城乡人口数目直方图
- ax4 = fig.add_subplot(3,1,2)
- plt.title("1996-2015年城乡人口数目直方图")
- plt.xlabel('年份')
- plt.ylabel('人口数目(万人)')
- pb3 = (new_x - 0.2,c_y,width=0.4) # 柱状图
- pb4 = (new_x + 0.2,x_y,width=0.4)
- _label(pb3,labels=c_y,padding=0.2) # 每个条块加上其值
- _label(pb4,labels=x_y,padding=0.2)
- plt.xticks(ticks= new_x, labels= y1) # ticks: x轴刻度的列表集合 labels:用文本或其他来代替刻度的值
- plt.legend(['城镇人口', '乡村人口'], loc='best')
- ()
复制代码 运行截图:
各年份男女生齿比例及城乡生齿比例的饼图
- # =====各年份男女人口比例及城乡人口比例的饼图
- '''
- 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)
- (v[0],labels= labels, explode=explode, autopct='%1.1f%%')
- plt.tick_params(labelsize=12)
- plt.title('1996年男女人口数饼图')
- ax6 = fig.add_subplot(2,4,2)
- (v[1],labels= labels, explode=explode, autopct='%1.1f%%')
- plt.tick_params(labelsize=12)
- plt.title('1997年男女人口数饼图')
- ax7 = fig.add_subplot(2,4,3)
- (v[-2],labels= labels, explode=explode, autopct='%1.1f%%')
- plt.tick_params(labelsize=12)
- plt.title('2014年男女人口数饼图')
- ax8 = fig.add_subplot(2,4,4)
- (v[-1],labels= labels, explode=explode, autopct='%1.1f%%')
- plt.tick_params(labelsize=12)
- plt.title('2015年男女人口数饼图')
- # 城乡人口数目饼图
- ax9 = fig.add_subplot(2,4,5)
- (v1[0],labels= labels1, explode=explode, autopct='%1.1f%%')
- plt.tick_params(labelsize=12)
- plt.title('1996年城乡人口数饼图')
- ax10 = fig.add_subplot(2,4,6)
- (v1[1],labels= labels1, explode=explode, autopct='%1.1f%%')
- plt.tick_params(labelsize=12)
- plt.title('1997年城乡人口数饼图')
- ax11 = fig.add_subplot(2,4,7)
- (v1[-2],labels= labels1, explode=explode, autopct='%1.1f%%')
- plt.tick_params(labelsize=12)
- plt.title('2014年城乡人口数饼图')
- ax12 = fig.add_subplot(2,4,8)
- (v1[-1],labels= labels1, explode=explode, autopct='%1.1f%%')
- plt.tick_params(labelsize=12)
- plt.title('2015年城乡人口数饼图')
- # =====保存图片===========
- plt.savefig('1996,19967,2014,2015年男女人口比例及城乡人口比例的饼图')
- ()
复制代码 运行截图:
ok`----- 小案例到这里就结束啦~
我们下次再见 ^_^
原文地址1:https://blog.csdn.net/qq_61122628/article/details/129556730
参考资料:python中用turtle画一个圆形 https://blog.csdn.net/SXIAOYAN_/article/details/140061099
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |