news 2026/4/23 18:50:14

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/4/23 11:20:01

知识图谱的智能跃迁:大模型环境下的架构革命

本文提出上下文图谱概念&#xff0c;通过四元组或n元组结构融入时效性、来源和决策逻辑等元数据&#xff0c;解决传统知识图谱的局限性。结合CGR3&#xff08;检索-排名-推理&#xff09;范式&#xff0c;利用大语言模型提升知识图谱补全和问答任务性能。实验显示&#xff0c;在…

作者头像 李华
网站建设 2026/4/23 12:55:09

HarmonyOS 页面路由与导航开发

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

作者头像 李华
网站建设 2026/4/23 10:11:23

Java中的代码块

在Java中&#xff0c;代码块是用一对花括号{}包裹起来的一段代码&#xff0c;根据其位置和用途不同&#xff0c;Java中主要有以下4中类型的代码块1.普通代码块1.定义&#xff1a;写在方法内部{ }的代码&#xff0c;用于限定变量作用域或逻辑分组2.特点&#xff1a;只能在方法、…

作者头像 李华
网站建设 2026/4/23 10:11:12

一番赏盲盒小程序前端功能:层级乐趣与便捷服务的双向赋能

一番赏盲盒小程序以层级化奖项体系为核心特色&#xff0c;凭借细腻的前端功能设计&#xff0c;精准还原线下抽赏的递进式惊喜&#xff0c;同时嫁接线上操作的高效便捷。在弱化营销属性的基础上&#xff0c;串联起赏系浏览、抽赏互动、权益兑现及收藏管理的全流程&#xff0c;以…

作者头像 李华
网站建设 2026/4/23 10:11:28

LINE收不到验证码?可能原因和解决方法

在LINE的使用过程中&#xff0c;有时在验证环节会碰到接收不到手机验证码的情况。可以参考本文排查原因、解决验证问题。一、LINE收不到验证码的可能原因1.虚拟号码如果使用的是非实名的、安全性不高的低质虚拟号码&#xff0c;可能会被平台阻止。2.号码被封如果之前在账号使用…

作者头像 李华
网站建设 2026/4/23 11:03:47

吃透分布式与微服务:3分钟分清区别,再也不怕面试被问!

在后端架构演进过程中&#xff0c;“分布式”和“微服务”是两个高频出现且极易混淆的概念。很多开发者入门时会有疑问&#xff1a;两者是不是一回事&#xff1f;微服务就是分布式吗&#xff1f;分布式一定是微服务吗&#xff1f;其实答案很明确&#xff1a;微服务是分布式架构…

作者头像 李华