《Python机器学习》基础代码

news2024/10/1 7:37:18

1,要学习Python机器学习,第一步就是读入数据,这里我们以读入excel的数据为例,利用jupyter notebook来编码,具体教程看这个视频

推荐先上传到jupyter notebook,再用名字.xlsx来导入

Jupyter notebook导入Excel数据的两种方法介绍_哔哩哔哩_bilibili

2,同一目录下的代码互相关联,也就是你在这个项目里import的库或者初始化的变量,可以在下一个项目使用,所以提交单个代码时可能会报错 

目录

1,Pandas的数据加工处理

2,空气质量监测数据预处理

3,空气质量检测数据基本分析


1,Pandas的数据加工处理

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
df1 = DataFrame({'key':['a','d','c','a','b','d','c'],'var1':range(7)}) #基于字典建立数据框
print('df1的数据:\n{0}'.format(df1))
df2 = DataFrame({'key':['a','b','c','c'],'var2':[0,1,2,2]})
print('df2的数据:\n{0}'.format(df2))
df = pd.merge(df1,df2,on='key',how='outer')
df.iloc[0,2]=np.NaN
df.iloc[5,1]=np.NaN
print('合并后的数据:\n{0}'.format(df))
df = df.drop_duplicates()
print('删除重复数据行后的数据:\n{0}'.format(df))
print('判断是否为缺失值:\n{0}'.format(df.isnull()))
print('判断是否不为缺失值:\n{0}'.format(df.notnull()))
print('删除缺失值后的数据:\n{0}'.format(df.dropna()))
fill_value=df[['var1','var2']].apply(lambda x:x.mean())
print('以均值替代缺失值:\n{0}'.format(df.fillna(fill_value)))

1,

第4,6行,字典的优势在于引入键,通过键访问数据更灵活

从数据集的角度,key和var1两个键对应两个变量(即数据集的两个列)

两组值则对应数据集两列的取值

df1行索引取值范围0至6,列索引名为key和var1

注意!基于字典建立数据库的“字典”,各组键的值的个数要相等,否则有些样本观测在某个变量上没有具体取值

2, 

第8行,pandas.merge()将两个数据框按指定关键字横向合并,也就是这个关键字这一列合并了,其他不变,但是个数会增多

.iloc[]=numpy.NaN指定样本观测的某变量为NaN,NaN在Numpy表示缺失值,不参与数据建模分析

3, 

.drop_duplicates()剔除在所有变量上都重复取值的样本观测

.isnull(),.notnull(),判断是否为NaN,输出True或False

.dropna()剔除取NaN的样本观测

.apply() + lambda计算各变量均值

.apply()实现循环处理,lambda告知了循环处理的步骤

.fillna()将所有NaN替换为指定值

df1的数据:
  key  var1
0   a     0
1   d     1
2   c     2
3   a     3
4   b     4
5   d     5
6   c     6
df2的数据:
  key  var2
0   a     0
1   b     1
2   c     2
3   c     2
合并后的数据:
  key  var1  var2
0   a   0.0   NaN
1   a   3.0   0.0
2   d   1.0   NaN
3   d   5.0   NaN
4   c   2.0   2.0
5   c   NaN   2.0
6   c   6.0   2.0
7   c   6.0   2.0
8   b   4.0   1.0
删除重复数据行后的数据:
  key  var1  var2
0   a   0.0   NaN
1   a   3.0   0.0
2   d   1.0   NaN
3   d   5.0   NaN
4   c   2.0   2.0
5   c   NaN   2.0
6   c   6.0   2.0
8   b   4.0   1.0
判断是否为缺失值:
     key   var1   var2
0  False  False   True
1  False  False  False
2  False  False   True
3  False  False   True
4  False  False  False
5  False   True  False
6  False  False  False
8  False  False  False
判断是否不为缺失值:
    key   var1   var2
0  True   True  False
1  True   True   True
2  True   True  False
3  True   True  False
4  True   True   True
5  True  False   True
6  True   True   True
8  True   True   True
删除缺失值后的数据:
  key  var1  var2
1   a   3.0   0.0
4   c   2.0   2.0
6   c   6.0   2.0
8   b   4.0   1.0
以均值替代缺失值:
  key  var1  var2
0   a   0.0   1.4
1   a   3.0   0.0
2   d   1.0   1.4
3   d   5.0   1.4
4   c   2.0   2.0
5   c   3.0   2.0
6   c   6.0   2.0
8   b   4.0   1.0

2,空气质量监测数据预处理

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

data=pd.read_excel('北京市空气质量数据.xlsx') #pandas.read_excel()将excel格式数据读入数据框
data=data.replace(0,np.NaN) #数据框函数.replace(0,numpy.NaN)将0替换为缺失值NaN
data['年']=data['日期'].apply(lambda x:x.year) #.apply(lambda x:x.year)基于'日期'变量得到年份
month=data['日期'].apply(lambda x:x.month)
quarter_month={'1':'一季度','2':'一季度','3':'一季度', #建立一个关于月份和季度的字典quarter_month
              '4':'二季度','5':'二季度','6':'二季度',
              '7':'三季度','8':'三季度','9':'三季度',
              '10':'四季度','11':'四季度','12':'四季度'} 
data['季度']=month.map(lambda x:quarter_month[str(x)]) #month.map(lambda x:quarter_month...)将month中的1,2,3等月份映射到相应季度标签变量
bins=[0,50,100,150,200,300,1000] #生成一个列表bins,用于对后续AQI分组,它描述了AQI和空气质量等级的数值对应关系
data['等级']=pd.cut(data['AQI'],bins,labels=['一级优','二级良','三级轻度污染','四级中度污染','五级重度污染','六级严重污染'])
print('对AQI的分组结果:\n{0}'.format(data[['日期','AQI','等级','季度']])) #pandas.cut()对AQI分组

3,空气质量检测数据基本分析

import pandas as pd
data=pd.read_excel('北京市空气质量数据.xlsx') #pandas.read_excel()将Excel格式数据读入数据框
month=data['日期'].apply(lambda x:x.month) #基于日期变量, 得到每个样本观测的月份
quarter_month={'1':'一季度','2':'一季度','3':'一季度',
             '4':'二季度','5':'二季度','6':'二季度',
             '7':'三季度','8':'三季度','9':'三季度', #建立一个关于月份和季度的字典
             '10':'四季度','11':'四季度','12':'四季度'}
data['季度']=month.map(lambda x:quarter_month[str(x)]) #.map()将序列month中月份映射到对应季度标签上
bins=[0,50,100,150,200,300,1000] #列表bins, 描述AQI
data['等级']=pd.cut(data['AQI'],bins,labels=['一级优','二级良','三级轻度污染','四级中度污染','五级重度污染','六级严重污染'])
print('各季度的AQI和Pm2.5的均值:\n{0}'.format(data.loc[:,['AQI','PM2.5']].groupby(data['季度']).mean()))
print('各季度AQI和PM2.5的描述统计量:\n',data.groupby(data['季度'])['AQI','PM2.5'].apply(lambda x:x.describe()))

def top(df, n = 10, column='AQI'):
    return df.sort_values(by=column, ascending=False)[:n]
print('空气质量最差的5天:\n',top(data,n=5)[['日期','AQI','PM2.5','等级']])
print('各季度空气质量最差3天:\n',data.groupby(data['季度']).apply(lambda x:top(x, n=3)[['日期','AQI','PM2.5','等级']]))
print('各季度空气质量情况:\n',pd.crosstab(data['等级'],data['季度'],margins=True,margins_name='总计',normalize=False))
各季度的AQI和Pm2.5的均值:
            AQI      PM2.5
季度                        
一季度  109.125693  77.083179
三季度   98.731884  49.438406
二季度  108.766972  54.744954
四季度  109.400387  77.046422
各季度AQI和PM2.5的描述统计量:
                   AQI       PM2.5
季度                               
一季度 count  541.000000  541.000000
    mean   109.125693   77.083179
    std     80.468322   73.141507
    min      0.000000    0.000000
    25%     48.000000   24.000000
    50%     80.000000   53.000000
    75%    145.000000  109.000000
    max    470.000000  454.000000
三季度 count  552.000000  552.000000
    mean    98.731884   49.438406
    std     45.637813   35.425541
    min      0.000000    0.000000
    25%     60.000000   23.000000
    50%     95.000000   41.000000
    75%    130.250000   67.000000
    max    252.000000  202.000000
二季度 count  545.000000  545.000000
    mean   108.766972   54.744954
    std     50.129711   36.094890
    min      0.000000    0.000000
    25%     71.000000   27.000000
    50%     98.000000   47.000000
    75%    140.000000   73.000000
    max    500.000000  229.000000
四季度 count  517.000000  517.000000
    mean   109.400387   77.046422
    std     84.248549   76.652706
    min      0.000000    0.000000
    25%     55.000000   25.000000
    50%     78.000000   51.000000
    75%    137.000000  101.000000
    max    485.000000  477.000000
空气质量最差的5天:
              日期  AQI  PM2.5      等级
1218 2017-05-04  500      0  六级严重污染
723  2015-12-25  485    477  六级严重污染
699  2015-12-01  476    464  六级严重污染
1095 2017-01-01  470    454  六级严重污染
698  2015-11-30  450    343  六级严重污染
各季度空气质量最差3天:
                  日期  AQI  PM2.5      等级
季度                                     
一季度 1095 2017-01-01  470    454  六级严重污染
    45   2014-02-15  428    393  六级严重污染
    55   2014-02-25  403    354  六级严重污染
三季度 186  2014-07-06  252    202  五级重度污染
    211  2014-07-31  245    195  五级重度污染
    183  2014-07-03  240    190  五级重度污染
二季度 1218 2017-05-04  500      0  六级严重污染
    1219 2017-05-05  342    181  六级严重污染
    103  2014-04-14  279    229  五级重度污染
四季度 723  2015-12-25  485    477  六级严重污染
    699  2015-12-01  476    464  六级严重污染
    698  2015-11-30  450    343  六级严重污染
各季度空气质量情况:
 季度      一季度  三季度  二季度  四季度    总计
等级                              
一级优     145   96   38  108   387
二级良     170  209  240  230   849
三级轻度污染   99  164  152   64   479
四级中度污染   57   72   96   33   258
五级重度污染   48   10   14   58   130
六级严重污染   21    0    2   23    46
总计      540  551  542  516  2149
pd.get_dummies(data['等级']) #pandas.get_dummies()得到分类型变量等级的虚拟变量
data.join(pd.get_dummies(data['等级'])) #数据框的.join()将原始数据与虚拟变量按行索引横向合并

import numpy as np #导入numpy库
np.random.seed(123)#随机数种子
sampler=np.random.randint(0,len(data),10) #numpy.random.randint()指定范围随机抽取指定个数
print(sampler)
sampler=np.random.permutation(len(data))[:10] #numpy.random.permutation()随机打乱重排, 再抽取前10个
print(sampler)

data.take(sampler) #数据框.take()基于指定随机数获得数据集的一个随机子集
data.loc[data['质量等级']=='优',:] #数据框访问方式,抽取满足指定条件的行的数据子集

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/374753.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis - 06 - MyBatis获取参数值的两种方式(重要)

文章目录1、回顾JDBC原生的获取参数值的方式2、MyBatis获取参数值的两种方式3、MyBatis获取参数值的五种情况情况1: Mapper接口方法的参数为单个字面量类型的参数ParameterMapper接口代码测试类代码ParameterMapper.xml配置方式1:${}ParameterMapper.xml配置方式2:#…

[8]云计算概念、技术与架构Thomas Erl-第九章 云管理机制|week9|10月29日

9.0引言 基于云的IT资源需要被建立、配置、维护和监控。 远程管理系统 资源管理系统 SLA管理系统 计费管理系统 这些系统通常会提供整合的API,并能够以个别产品、定制应用或者各种组合产品套装和多功能应用的形式提供给用户。 9.1 远程管理系统 远程管理系统…

「回顾RKDC2023」飞凌嵌入式受邀亮相第七届瑞芯微开发者大会

2023年2月23-24日,第七届瑞芯微开发者大会(RKDC2023)在福州隆重举行,飞凌嵌入式作为瑞芯微生态合作伙伴受邀参会,并与数千名开发者科技公司代表及行业领袖共同聚焦行业新兴产品需求,探讨新硬件发展趋势&…

webpack实战,手写loader和plugin

序言 对于 webpack 来说, loader 和 plugin 可以算是需求程度最为广泛的配置项了。但是呢,单单止步于配置可能还不够。如果我们自己有时候想要 diy 一个需求,但是 webpack 又没有相关的 loader 和 plugin 。那这个时候我们可能就得开始造点轮…

【JAVA程序设计】(C00105)基于SSM大学在校生职业走向调查分析系统-有文档

基于SSM大学在校生职业走向调查分析系统-有文档项目简介项目获取开发环境项目技术运行截图项目简介 基于ssm框架大学生在校生职业走向调查分析系统分为二个角色:系统管理员、用户 管理员角色包含以下功能: 调查课题管理、留言信息管理、在校学生管理、社…

华为OD机试题,用 Java 解【最小步骤数】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…

JavaSE-3 Java运行原理

一、Java的运行过程 🍎Java程序运行时,必须经过编译和运行两个步骤。 首先将后缀名为.java的源文件进行编译,最终生成后缀名为.class的字节码文件。然后Java虚拟机将字节码文件进行解释执行,并将结果显示出来。具体过程如下图所示。 🍉Java程序的运行过…

Java集合学习:LinkedList源码详解

前言 LinkedList在我们平时工作中使用频率非车高,底层是基于双向链表数据结构实现,下面从经常使用的几个方法来了解其原理。 正文 结构 我们先看下LinkedList的重要属性 /**存储链表数量*/transient int size 0;/**存储链表的头节点*/transient Node…

MTK平台使用Omnipeek分析空口协议讲解

讲解这个之前,我们先来了解下beacon/robe Request/Probe Response 三种帧 beacon帧 信标帧,由AP以一定的时间间隔周期性发出,以此来告诉外界自己无线网络的存在。 Beacon帧作为802.11中一个周期性的帧,Beacon周期调高,对应睡眠周期拉长,故节能(即越来休息100ms再起来…

Laravel框架04:视图与CSRF攻击

Laravel框架04:视图与CSRF攻击一、视图概述二、变量分配与展示三、模板中直接使用函数四、循环与分支语法标签五、模板继承、包含1. 继承2. 包含六、外部静态文件引入七、CSRF攻击概述八、从CSRF验证中排除例外路由一、视图概述 视图存放在 resources/views 目录下…

Verilog 学习第五节(串口接收部分)

小梅哥串口部分学习part2 串口通信接收原理串口通信接收程序设计与调试巧用位操作优化串口接收逻辑设计串口接收模块的项目应用案例串口通信接收原理 在采样的时候没有必要一直判断一个clk内全部都是高/低电平,如果采用直接对中间点进行判断的话,很有可能…

CISP注册信息安全专业人员证书

一、什么是“CISP”? 注册信息安全专业人员(Certified Information Security Professional,简称“CISP”),是安全行业最为权威的安全资格认证,由中国信息安全测评中心统一授权组织,中国信息安全测评中心授权培训机构进…

学习笔记之Vue中的Ajax(四)

Vue中的Ajax(四)Vue中的ajax一、解决开发环境Ajax跨越问题二、github 用户搜索案例2.1 准备工作2.2 静态页面2.3 实现动态组件2.4 注意细节三、vue 项目中常用的 2 个 Ajax 库3.1 axios3.2 vue-resource四、slot插槽(四)Vue中的aj…

计算结构体大小

计算结构体大小 目录计算结构体大小一. 结构体内存对齐1. 简介2. 嵌套结构体二. offsetof三. 内存对齐的意义四. 修改默认对齐数一. 结构体内存对齐 以字节(bety)为单位 1. 简介 对于结构体成员在内存里的存储,存在结构体的对齐规则&#…

代码随想录算法训练营day44 | 动态规划之完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ

day44完全背包基础知识问题描述举个栗子518. 零钱兑换 II1.确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组377. 组合总和 Ⅳ1.确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例来推导dp数组完全背包基…

安全合规之CVE-2016-2183

文章目录概述分析解决补充信息概述 安全部门脆弱性扫描到如下的风险漏洞要求系统上线必须要修复完毕。 不过我仔细的看了安全部门返回的报告,它是针对Windows Server 2019远程桌面端口进行风险报告…这是刷存在感了吗?哎,没有办法先做调查确…

高压放大器在声波谐振电小天线收发测试系统中的应用

实验名称:高压放大器在声波谐振电小天线收发测试系统中的应用研究方向:信号传输测试目的:声波谐振电小天线颠覆了传统电小天线以电磁波谐振作为理论基础的天线发射和接收模式,它借助声波谐振实现电磁信号的辐射或接收。因为同频的…

Spring Batch 综合案例实战-项目准备

目录 案例需求 分析 项目准备 步骤1:新开spring-batch-example 步骤2:导入依赖 步骤3:配置文件 步骤4:建立employee表与employe_temp表 步骤5:建立基本代码体系-domain-mapper-service-controller-mapper.xml …

YMatrix + PLPython替代Spark实现车联网算法

PySpark算法开发实战 一、PySpark介绍 Spark是一种快速、通用、可扩展的大数据分析引擎,PySpark是Spark为Python开发者提供的API。在有非常多可视化和机器学习算法需求的应用场景,使用PySpark比Spark-Scala可以更好地和python中丰富的库配合使用。 使…

监听页面滚动,给页面中的节点添加动态过渡效果

效果示例图 示例代码 <template><div class"animation-wrap"><!-- header-start --><div class"animation-header">头部</div><!-- header-end --><div class"animation-subtitle animation-show">标…