ubuntu

Ubuntu Python数据分析

小樊
40
2025-10-01 19:03:55
栏目: 编程语言

Ubuntu下Python数据分析完整流程指南

一、基础环境搭建

  1. 安装Python与pip
    Ubuntu系统通常预装Python3,但需手动确认并安装pip(Python包管理工具)。通过以下命令完成安装:

    sudo apt update
    sudo apt install python3 python3-pip
    
  2. 配置虚拟环境(推荐)
    为避免不同项目的依赖冲突,建议使用虚拟环境隔离。创建并激活虚拟环境的命令如下:

    python3 -m venv myenv  # 创建名为myenv的虚拟环境
    source myenv/bin/activate  # 激活虚拟环境(激活后终端提示符会显示环境名)
    

    激活后,后续安装的库仅在该环境中生效,不会影响系统全局配置。

  3. 安装核心数据分析库
    通过pip安装Python数据分析的基础库,覆盖数值计算、数据处理、可视化等需求:

    pip3 install numpy pandas matplotlib seaborn scikit-learn jupyter
    
    • NumPy:用于高效数值计算(如多维数组运算);
    • Pandas:提供DataFrame等数据结构,支持数据清洗、转换与分析;
    • Matplotlib/Seaborn:用于数据可视化(Matplotlib为基础库,Seaborn提供更美观的高级接口);
    • Scikit-learn:机器学习库,支持分类、回归、聚类等任务;
    • Jupyter Notebook:交互式开发环境,适合探索性数据分析与结果展示。

二、数据获取与预处理

  1. 数据获取方式
    数据分析的第一步是获取数据,常见来源包括文件、数据库与网络:

    • 文件读取:使用Pandas读取CSV、Excel等格式文件:
      import pandas as pd
      df_csv = pd.read_csv('data.csv')  # 读取CSV文件
      df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1')  # 读取Excel文件
      
    • 数据库读取:通过SQLAlchemy连接数据库(如MySQL),执行SQL查询并将结果转为DataFrame:
      from sqlalchemy import create_engine
      engine = create_engine('mysql+pymysql://user:password@localhost:3306/database_name')
      df_db = pd.read_sql('SELECT * FROM table_name', engine)
      
    • 网络获取:使用Requests库获取网页数据,BeautifulSoup解析HTML内容(适用于爬虫场景)。
  2. 数据清洗与预处理
    原始数据通常存在缺失值、重复值或格式不一致等问题,需通过以下操作清理:

    • 处理缺失值:删除含缺失值的行,或用均值、中位数填充:
      df_clean = df.dropna()  # 删除任何缺失值的行
      df['column'] = df['column'].fillna(df['column'].mean())  # 用均值填充某列缺失值
      
    • 数据类型转换:将日期字符串转为datetime类型,便于时间序列分析:
      df['date_column'] = pd.to_datetime(df['date_column'])
      
    • 去除重复值:使用df.drop_duplicates()删除重复行。

三、数据探索性分析(EDA)

探索性数据分析是理解数据特征的关键步骤,通过统计分析与可视化快速掌握数据分布与规律:

  1. 描述性统计
    使用Pandas的describe()方法获取数值列的统计摘要(均值、标准差、最小值、最大值等):

    print(df.describe())
    
  2. 数据可视化

    • 直方图:展示数值列的分布情况:
      import matplotlib.pyplot as plt
      df['column'].hist(bins=20)
      plt.xlabel('Value')
      plt.ylabel('Frequency')
      plt.title('Histogram of Column')
      plt.show()
      
    • 箱线图:识别异常值与数据离散程度:
      import seaborn as sns
      sns.boxplot(x='category_column', y='value_column', data=df)
      plt.show()
      
    • 折线图:展示时间序列数据的趋势变化:
      df.plot(x='date_column', y='value_column', kind='line')
      plt.title('Trend of Value Over Time')
      plt.show()
      
  3. 相关性分析
    使用热力图展示数值列之间的相关性,帮助识别变量间的关联:

    sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
    plt.title('Correlation Heatmap')
    plt.show()
    

四、数据分析与建模

  1. 分组聚合与数据透视

    • 分组聚合:按某列分组,计算另一列的统计值(如均值、总和):
      grouped = df.groupby('category_column')['value_column'].mean()
      
    • 数据透视表:创建交叉表,分析多列数据的关系:
      pivot = df.pivot_table(values='value_column', index='row_column', columns='column_column', aggfunc='mean')
      
  2. 机器学习建模(进阶)
    使用Scikit-learn进行简单的机器学习任务(以线性回归为例):

    • 数据准备:划分特征(X)与目标变量(y),拆分训练集与测试集:
      from sklearn.model_selection import train_test_split
      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)
      
    • 模型训练与评估:使用线性回归模型拟合数据,评估模型性能:
      from sklearn.linear_model import LinearRegression
      from sklearn.metrics import mean_squared_error
      model = LinearRegression()
      model.fit(X_train, y_train)
      y_pred = model.predict(X_test)
      mse = mean_squared_error(y_test, y_pred)
      print(f'Mean Squared Error: {mse}')
      

五、进阶工具推荐

  1. Anaconda发行版
    Anaconda集成了Python、pip及大量数据分析库(如NumPy、Pandas、Jupyter),并提供图形化管理工具(Anaconda Navigator),适合新手快速搭建环境。安装后可通过conda命令管理虚拟环境与库:

    wget https://repo.anaconda.com/archive/Anaconda3-2024.05-Linux-x86_64.sh
    bash Anaconda3-2024.05-Linux-x86_64.sh  # 按提示安装
    source ~/.bashrc  # 激活Anaconda环境
    conda create --name myenv python=3.8  # 创建虚拟环境
    conda activate myenv  # 激活环境
    
  2. Dask与PySpark(大数据处理)
    当数据量超过内存限制时,可使用Dask(并行计算库)或PySpark(分布式计算框架)处理大规模数据:

    • Dask:将Pandas DataFrame转为Dask DataFrame,支持并行计算:
      import dask.dataframe as dd
      ddf = dd.from_pandas(df, npartitions=4)  # 分成4个分区
      mean = ddf['column'].mean().compute()  # 计算均值(触发实际计算)
      
    • PySpark:通过SparkSession创建DataFrame,支持分布式处理:
      from pyspark.sql import SparkSession
      spark = SparkSession.builder.appName("BigDataAnalysis").getOrCreate()
      sdf = spark.read.csv('large_data.csv', header=True, inferSchema=True)
      mean = sdf.selectExpr('avg(column)').collect()[0][0]
      ```[3,7,9]

0
看了该问题的人还看了