news 2026/6/9 23:40:58

python数据分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python数据分析

Python数据分析是一个系统性的技术领域,涉及数据获取、清洗、处理、可视化到建模的完整流程。以下是核心知识体系和实践指南:

一、Python数据分析技术栈

核心库与工具

库名称

主要用途

学习重点

NumPy

数值计算基础,多维数组操作

数组创建、索引切片、广播机制、数学运算

Pandas

数据处理核心,表格数据操作

DataFrame操作、数据清洗、分组聚合、合并连接

Matplotlib

基础绘图库,高度可定制

折线图、柱状图、散点图、子图布局

Seaborn

统计可视化,基于Matplotlib

分布图、热力图、分类图、主题美化

Scikit-learn

机器学习库,算法丰富

数据预处理、模型训练、评估、特征工程

辅助工具

  • Jupyter Notebook/JupyterLab:交互式开发环境,适合探索性分析

  • VS Code/PyCharm:专业IDE,适合大型项目

  • Anaconda:包管理工具,简化环境配置

二、数据分析完整流程

阶段1:数据获取与加载

import pandas as pd # 从CSV文件读取 df = pd.read_csv('data.csv', encoding='utf-8') # 从Excel读取 df = pd.read_excel('data.xlsx', sheet_name='Sheet1') # 从数据库读取(需安装对应驱动) import sqlite3 conn = sqlite3.connect('database.db') df = pd.read_sql_query('SELECT * FROM table', conn)

阶段2:数据探索与清洗

# 查看数据基本信息 print(df.info()) # 数据类型、缺失值 print(df.describe()) # 数值型统计描述 print(df.head()) # 前几行数据 # 处理缺失值 df.dropna() # 删除缺失行 df.fillna(0) # 填充为0 df.fillna(df.mean()) # 用均值填充 # 处理重复值 df.drop_duplicates() # 数据类型转换 df['column'] = df['column'].astype('int') # 转换为整型 df['date_col'] = pd.to_datetime(df['date_col']) # 转换为日期 # 异常值处理 Q1 = df['col'].quantile(0.25) Q3 = df['col'].quantile(0.75) IQR = Q3 - Q1 df = df[~((df['col'] < (Q1 - 1.5*IQR)) | (df['col'] > (Q3 + 1.5*IQR)))]

阶段3:数据预处理与特征工程

# 数据标准化 from sklearn.preprocessing import StandardScaler scaler = StandardScaler() df_scaled = scaler.fit_transform(df[['col1', 'col2']]) # 独热编码(分类变量) df_encoded = pd.get_dummies(df, columns=['category_col']) # 时间特征提取 df['year'] = df['date_col'].dt.year df['month'] = df['date_col'].dt.month df['day_of_week'] = df['date_col'].dt.dayofweek # 分组聚合 grouped = df.groupby('category')['value'].agg(['mean', 'std', 'count'])

阶段4:数据可视化

import matplotlib.pyplot as plt import seaborn as sns # 设置样式 plt.style.use('seaborn-v0_8') sns.set_palette('husl') # 单变量分布 plt.figure(figsize=(10, 6)) sns.histplot(df['value'], kde=True) plt.title('Value Distribution') plt.show() # 双变量关系 plt.figure(figsize=(10, 6)) sns.scatterplot(x='x_col', y='y_col', data=df, hue='category') plt.title('Scatter Plot') plt.show() # 多变量热力图 corr = df.corr() plt.figure(figsize=(12, 8)) sns.heatmap(corr, annot=True, cmap='coolwarm') plt.title('Correlation Heatmap') plt.show()

阶段5:建模与评估

from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score # 划分训练集和测试集 X = df[['feature1', 'feature2']] y = df['target'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 模型训练 model = LinearRegression() model.fit(X_train, y_train) # 预测与评估 y_pred = model.predict(X_test) print('MSE:', mean_squared_error(y_test, y_pred)) print('R2 Score:', r2_score(y_test, y_pred)) # 特征重要性(线性回归系数) coef_df = pd.DataFrame({'feature': X.columns, 'coefficient': model.coef_}) print(coef_df.sort_values('coefficient', ascending=False))

三、常用数据分析场景

1. 描述性统计分析

# 基本统计量 df.describe() # 分类变量统计 df['category'].value_counts() # 交叉表 pd.crosstab(df['cat1'], df['cat2']) # 分组统计 df.groupby('group_col')['value_col'].agg(['mean', 'median', 'std'])

2. 时间序列分析

# 设置时间索引 df_time = df.set_index('date_col') # 重采样(日→月) monthly_data = df_time['value'].resample('M').mean() # 移动平均 rolling_mean = df_time['value'].rolling(window=7).mean() # 时间序列可视化 plt.figure(figsize=(12, 6)) plt.plot(df_time.index, df_time['value'], label='Original') plt.plot(rolling_mean.index, rolling_mean, label='7-Day MA', color='red') plt.legend() plt.show()

3. 数据透视表

# 创建透视表 pivot_table = pd.pivot_table(df, values='sales', index='region', columns='month', aggfunc='sum', fill_value=0) print(pivot_table)

4. 数据合并与连接

# 按列合并 pd.concat([df1, df2], axis=1) # 按行合并 pd.concat([df1, df2], axis=0) # 按键连接 pd.merge(df1, df2, on='key_col', how='inner') # 内连接 pd.merge(df1, df2, on='key_col', how='left') # 左连接
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 23:32:13

ArduPilot代码解析之一 — 核心架构

目的和范围 本页面详细介绍了构成所有 ArduPilot 车辆类型基础的基本架构模式和核心系统。内容涵盖基础车辆框架(AP_Vehicle)、基于调度器的执行模型、参数系统以及核心子系统的集成和初始化方式。 有关特定车辆的实现方式(直升机、飞机、漫游车等),请参阅后续章节。 架…

作者头像 李华
网站建设 2026/6/6 6:43:22

万物识物的模型规模、多国语言翻译的词库/模型体量在端侧本地模型可以放下吗?

问题直击端侧AI落地的核心痛点——万物识物的模型规模、多国语言翻译的词库/模型体量与端侧芯片的存储、算力、功耗的矛盾&#xff0c;这也是当前端侧AI技术的核心优化方向。但答案是明确的&#xff1a;经过轻量化优化的端侧模型&#xff0c;完全能实现「实用级」的万物识物和多…

作者头像 李华
网站建设 2026/6/6 2:03:45

Java中,方法/类的修饰符的书写位置

一.书写顺序&#xff08;含类、方法、字段&#xff09; 在Java中&#xff0c;方法的修饰符和返回类型的书写顺序是有规定的 如main方法中&#xff0c;正确且标准的写法是&#xff1a; public static void main(String[] args){... } 这是Java社区、官方文档、IDE&#xff0…

作者头像 李华
网站建设 2026/6/6 11:45:20

填志愿/选方向必看!计算机18大专业的终极选择攻略

一次搞懂计算机类18个本科专业方向的区别&#xff0c;谁是“宝藏”谁是“天坑”&#xff1f; 随着科技进步的日新月异&#xff0c;互联网在日常生活中所扮演的角色越来越重要。数字化、信息化的时代里&#xff0c;计算机类专业无疑是当今高考最热门且最具发展前景的志愿填报方…

作者头像 李华
网站建设 2026/6/9 19:44:06

ABP框架07.在 DDD中把查询作为可演进的契约

数据查询进阶(上)&#xff1a;作者热度榜报表与 Dapper 的“可控查询” 哈喽&#xff0c;我是黑棠 在CRUD中&#xff0c;通用仓储 IRepository<T> EF Core 的查询表达式&#xff0c;足以覆盖列表、详情、简单筛选。 但在“报表类查询”里&#xff0c;常见的痛点不是写不…

作者头像 李华
网站建设 2026/6/9 21:08:25

孤能子视角:“智慧物流“

第一步&#xff1a;分析“作者”——智慧物流体系&#xff08;作为“供应链生命共同体”的超级孤能子&#xff09;启动&#xff1a;三力逼问&#xff0c;定位张力1. 零预设&#xff1a;不预设智慧物流是“运输自动化”或“信息化”&#xff0c;视其为全球贸易与数字技术双重浪潮…

作者头像 李华