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

安装Python与pipUbuntu系统通常预装Python3,但需手动确认并安装pip(Python包管理工具)。通过以下命令完成安装:
sudo apt updatesudo apt install python3 python3-pip配置虚拟环境(推荐)为避免不同项目的依赖冲突,建议使用虚拟环境隔离。创建并激活虚拟环境的命令如下:
python3 -m venv myenv# 创建名为myenv的虚拟环境source myenv/bin/activate# 激活虚拟环境(激活后终端提示符会显示环境名)激活后,后续安装的库仅在该环境中生效,不会影响系统全局配置。
安装核心数据分析库通过pip安装Python数据分析的基础库,覆盖数值计算、数据处理、可视化等需求:
pip3 install numpy pandas matplotlib seaborn scikit-learn jupyter数据获取方式数据分析的第一步是获取数据,常见来源包括文件、数据库与网络:
import pandas as pddf_csv = pd.read_csv('data.csv')# 读取CSV文件df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1')# 读取Excel文件from sqlalchemy import create_engineengine = create_engine('mysql+pymysql://user:password@localhost:3306/database_name')df_db = pd.read_sql('SELECT * FROM table_name', engine)数据清洗与预处理原始数据通常存在缺失值、重复值或格式不一致等问题,需通过以下操作清理:
df_clean = df.dropna()# 删除任何缺失值的行df['column'] = df['column'].fillna(df['column'].mean())# 用均值填充某列缺失值df['date_column'] = pd.to_datetime(df['date_column'])df.drop_duplicates()删除重复行。探索性数据分析是理解数据特征的关键步骤,通过统计分析与可视化快速掌握数据分布与规律:
描述性统计使用Pandas的describe()方法获取数值列的统计摘要(均值、标准差、最小值、最大值等):
print(df.describe())数据可视化
import matplotlib.pyplot as pltdf['column'].hist(bins=20)plt.xlabel('Value')plt.ylabel('Frequency')plt.title('Histogram of Column')plt.show()import seaborn as snssns.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()相关性分析使用热力图展示数值列之间的相关性,帮助识别变量间的关联:
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')plt.title('Correlation Heatmap')plt.show()分组聚合与数据透视
grouped = df.groupby('category_column')['value_column'].mean()pivot = df.pivot_table(values='value_column', index='row_column', columns='column_column', aggfunc='mean')机器学习建模(进阶)使用Scikit-learn进行简单的机器学习任务(以线性回归为例):
from sklearn.model_selection import train_test_splitX = 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 LinearRegressionfrom sklearn.metrics import mean_squared_errormodel = 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}')Anaconda发行版Anaconda集成了Python、pip及大量数据分析库(如NumPy、Pandas、Jupyter),并提供图形化管理工具(Anaconda Navigator),适合新手快速搭建环境。安装后可通过conda命令管理虚拟环境与库:
wget https://repo.anaconda.com/archive/Anaconda3-2024.05-Linux-x86_64.shbash Anaconda3-2024.05-Linux-x86_64.sh# 按提示安装source ~/.bashrc# 激活Anaconda环境conda create --name myenv python=3.8# 创建虚拟环境conda activate myenv# 激活环境Dask与PySpark(大数据处理)当数据量超过内存限制时,可使用Dask(并行计算库)或PySpark(分布式计算框架)处理大规模数据:
import dask.dataframe as ddddf = dd.from_pandas(df, npartitions=4)# 分成4个分区mean = ddf['column'].mean().compute()# 计算均值(触发实际计算)from pyspark.sql import SparkSessionspark = 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]