Python【数据处理】高级编程

Python【数据处理】高级编程

一、引言

Python在数据处理和分析领域具有强大的功能,尤其是在处理复杂数据集和进行高级分析时。本教程将涵盖从数据清洗、预处理到高级数据分析和优化的多个方面,帮助读者掌握Python数据处理的高级技巧。

二、数据清洗与预处理

(一)删除多列数据

def drop_multiple_col(col_names_list, df):
    '''删除指定的多列'''
    df.drop(col_names_list, axis=1, inplace=True)
    return df

(二)转换数据类型

def change_dtypes(col_int, col_float, df):
    '''将指定列转换为整数或浮点类型'''
    df[col_int] = df[col_int].astype('int32')
    df[col_float] = df[col_float].astype('float32')
    return df

(三)将分类变量转换为数值变量

def convert_cat2num(df):
    '''将分类变量转换为数值变量'''
    num_encode = {'col_1': {'YES': 1, 'NO': 0},
                  'col_2': {'WON': 1, 'LOSE': 0, 'DRAW': 0}}
    df.replace(num_encode, inplace=True)
    return df

(四)检查缺失数据

def check_missing_data(df):
    '''检查数据中的缺失值'''
    return df.isnull().sum().sort_values(ascending=False)

(五)删除列中的字符串

def remove_col_str(df):
    '''删除列中的字符串'''
    df['col_1'].replace('\n', '', regex=True, inplace=True)
    df['col_1'].replace(' &#.*', '', regex=True, inplace=True)
    return df

(六)删除列中的空格

def remove_col_white_space(df, col):
    '''删除列中字符串开头的空格'''
    df[col] = df[col].str.lstrip()
    return df

(七)将两列字符串数据拼接

def concat_col_str_condition(df):
    '''在一定条件下拼接两列字符串'''
    mask = df['col_1'].str.endswith('pil', na=False)
    col_new = df[mask]['col_1'] + df[mask]['col_2']
    col_new.replace('pil', ' ', regex=True, inplace=True)
    return col_new

(八)转换时间戳

def convert_str_datetime(df):
    '''将字符串格式的时间戳转换为日期格式'''
    df.insert(loc=2, column='timestamp', value=pd.to_datetime(df['transdate'], format='%Y-%m-%d %H:%M:%S.%f'))
    return df

三、数据预处理

(一)归一化

from sklearn.preprocessing import MinMaxScaler

def normalize_data(df):
    '''对数据进行Min-Max归一化'''
    scaler = MinMaxScaler()
    normalized_data = scaler.fit_transform(df)
    normalized_df = pd.DataFrame(normalized_data, columns=df.columns)
    return normalized_df

(二)标准化

from sklearn.preprocessing import StandardScaler

def standardize_data(df):
    '''对数据进行标准化'''
    scaler = StandardScaler()
    standardized_data = scaler.fit_transform(df)
    standardized_df = pd.DataFrame(standardized_data, columns=df.columns)
    return standardized_df

四、时间序列分析

(一)ARIMA模型

from statsmodels.tsa.arima.model import ARIMA
import matplotlib.pyplot as plt

def arima_model(data, order=(5, 1, 0)):
    '''使用ARIMA模型进行时间序列预测'''
    model = ARIMA(data, order=order)
    model_fit = model.fit()
    forecast = model_fit.predict(start=len(data), end=len(data) + 10)
    plt.plot(data, label='Actual')
    plt.plot(forecast, label='Forecast')
    plt.legend()
    plt.show()
    return forecast

五、特征工程

(一)特征选择

from sklearn.feature_selection import SelectKBest, chi2

def select_features(X, y, k=2):
    '''使用卡方检验选择特征'''
    selector = SelectKBest(chi2, k=k)
    X_new = selector.fit_transform(X, y)
    return X_new

(二)特征构造

def create_new_feature(df):
    '''构造新特征:年龄与薪资的比值'''
    df['Age_Salary_Ratio'] = df['Age'] / df['Salary']
    return df

六、大数据处理

(一)使用Dask处理大数据

import dask.dataframe as dd

def process_large_data(file_path):
    '''使用Dask处理大规模数据'''
    ddf = dd.read_csv(file_path)
    daily_sales = ddf.groupby(ddf['date'].dt.date).agg({'amount': 'sum'}).compute()
    return daily_sales

(二)使用PySpark处理分布式数据

from pyspark.sql import SparkSession

def spark_processing(file_path):
    '''使用PySpark处理分布式数据'''
    spark = SparkSession.builder.appName("BigDataProcessing").getOrCreate()
    df = spark.read.csv(file_path, header=True, inferSchema=True)
    df.show()
    spark.stop()

七、机器学习中的数据预处理

(一)朴素贝叶斯分类

from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

def naive_bayes_classifier(X, y):
    '''使用朴素贝叶斯分类器'''
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    clf = GaussianNB()
    clf.fit(X_train, y_train)
    y_pred = clf.predict(X_test)
    accuracy = accuracy_score(y_test, y_pred)
    return accuracy

(二)决策树分类

from sklearn.tree import DecisionTreeClassifier

def decision_tree_classifier(X, y):
    '''使用决策树分类器'''
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    dtree = DecisionTreeClassifier()
    dtree.fit(X_train, y_train)
    y_pred = dtree.predict(X_test)
    accuracy = accuracy_score(y_test, y_pred)
    return accuracy

八、总结

本教程涵盖了Python数据处理的多个高级主题,包括数据清洗、预处理、时间序列分析、特征工程、大数据处理以及机器学习中的数据预处理。通过这些代码实例和算法原理的讲解,读者可以系统地掌握如何处理复杂数据集,并为后续的数据分析和机器学习任务做好准备。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里云CDN转https个人测试证书过期更换

网站是http的虚拟主机,微信小程序要求https,所以申请了阿里云CDN和个人测试证书(以前叫免费证书),把http转成https。 但是个人测试证书只有三个月有效期,所以每隔三个月要手动申请更换一次。 在阿里云CDN…

东信营销科技巨额补贴仍由盈转亏:毛利率大幅下滑,现金流告急

《港湾商业观察》施子夫 近期,东信营销科技有限公司(以下简称,东信营销科技)递表港交所,联席保荐机构为海通国际和中银国际。 东信营销科技的国内运营主体为深圳市东信时代信息技术有限公司。尽管期内收入规模有所提…

AOP进阶-04.切入点表达式-@annotation

一.annotation注解 我们在最后一个切入点表达式中要匹配多个无规则的方法,这样的写法有些冗余了。而annotation注解就是来解决这一问题的。 annotation注解使用特定的注解来匹配方法。我们首先自定义一个注解,该注解就相当于一个标签,目标对…

特斯拉 FSD 算法深度剖析:软件层面全解读

一、引言 特斯拉的 FSD(Full Self-Driving)系统作为自动驾驶领域的前沿成果,其软件层面的算法设计至关重要。本文将从软件的角度,深入探讨特斯拉 FSD 所采用的算法,包括感知、规划、控制等多个方面,以期为…

LabVIEW同步数据采集功能

VI通过使用数据采集(DAQ)硬件系统,进行多通道同步采集,实时获取模拟信号数据。它利用外部时钟信号触发数据采集,支持连续采样模式,并将采集到的数据实时显示在波形图上,方便用户进行数据监控和分…

YOLOv12 ——基于卷积神经网络的快速推理速度与注意力机制带来的增强性能结合

概述 实时目标检测对于许多实际应用来说已经变得至关重要,而Ultralytics公司开发的YOLO(You Only Look Once,只看一次)系列一直是最先进的模型系列,在速度和准确性之间提供了稳健的平衡。注意力机制的低效阻碍了它们在…

Ubuntu20.04之VNC的安装使用与常见问题

Ubuntu20.04之VNC的安装与使用 安装图形桌面选择安装gnome桌面选择安装xface桌面 VNC-Server安装配置开机自启 VNC Clientroot用户无法登入问题临时方案永久方案 安装图形桌面 Ubuntu20.04主流的图形桌面有gnome和xface两种,两种桌面的安装方式我都会写&#xff0c…

14.二叉搜索树

二叉搜索树 1.概念 ⼆叉搜索树⼜称⼆叉排序树,它或者是⼀棵空树,或者是具有以下性质的⼆叉树: *若它的左⼦树不为空,则左⼦树上所有结点的值都⼩于等于根结点的值 *若它的右⼦树不为空,则右⼦树上所有结点的值都⼤于等于根结点…

web网络安全---cookie篇

什么是Cookie 由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的…

Qt 开源音视频框架模块之QtAV播放器实践

Qt 开源音视频框架模块QtAV播放器实践 1 摘要 QtAV是一个基于Qt的多媒体框架,旨在简化音视频播放和处理。它是一个跨平台的库,支持多种音视频格式,并提供了一个简单易用的API来集成音视频功能。QtAV的设计目标是为Qt应用程序提供强大的音视…

WPF学习之Prism(二)

前言 学习一下Prism。 1.Prism Prism框架提供了一套丰富的工具、类和模块,帮助开发人员实现以下功能: 模块化:Prism框架支持将应用程序拆分为多个模块,每个模块具有自己的功能和视图。这种模块化的设计使得应用程序更加灵活和…

前端实现rsa加密功能

本文将从web和小程序两个端来实现rsa的加密功能。 一般项目的登录密码、身份证号以及一些用户敏感信息等在传输的时候需要使用加密传输,一般来说,前端只会得到后端给的公钥,而rsa加密,可以用公钥加密,也可以用私钥加密…

VidSketch:具有扩散控制的手绘草图驱动视频生成

浙大提出的VidSketch是第一个能够仅通过任意数量的手绘草图和简单的文本提示来生成高质量视频动画的应用程序。该方法训练是在单个 RTX4090 GPU 上进行的,针对每个动作类别使用一个小型、高质量的数据集。VidSketch方法使所有用户都能使用简洁的文本提示和直观的手绘…

STM32——HAL库开发笔记23(定时器4—输入捕获)(参考来源:b站铁头山羊)

定时器有四个通道,这些通道既可以用来作为输入,又可以作为输出。做输入的时候,可以使用定时器对外部输入的信号的时间参数进行测量;做输出的时候,可以使用定时器向外输出精确定时的方波信号。 一、输入捕获 的基本原理…

Jquery详解

一.Jquery介绍 1.jQuery 是一个快速、简洁的 JavaScript 库,它极大地简化了 HTML 文档遍历、事件处理、动画效果和 AJAX 交互等操作,使开发者能够更轻松地创建动态和交互性强的网页。对原生js的封装,提供了很多时间,调用Api即可,并且对浏览器做了兼容性…

【EB-06】SystemCreator dbc转arxml

SystemCreator dbc转arxml 1. SystemCreator 意义2. SystemCreator使用方法2.1 实现步骤2.2 参考官方文档方法1. SystemCreator 意义 EB Tresos 对dbc直接导入的支持不是很完善,dbc也不是AUTOSAR标准的数据库文件,EB建议所有通信矩阵通过ARXML交互比较合理(AUTOSAR定义的)…

LeetCode225.用队列实现栈

LeetCode225.用队列实现栈 文章目录 LeetCode225.用队列实现栈题目描述实现1:实现2: 题目描述 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack…

【Linux】vim 设置

【Linux】vim 设置 零、起因 刚学Linux,有时候会重装Linux系统,然后默认的vi不太好用,需要进行一些设置,本文简述如何配置一个好用的vim。 壹、软件安装 sudo apt-get install vim贰、配置路径 对所有用户生效: …

【FL0091】基于SSM和微信小程序的社区二手物品交易小程序

🧑‍💻博主介绍🧑‍💻 全网粉丝10W,CSDN全栈领域优质创作者,博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发…

Javaweb后端数据库多表关系一对多,外键,一对一

多表关系 一对多 多的表里,要有一表里的主键 外键 多的表上,添加外键 一对一 多对多 案例