Ubuntu下Python数据分析完整流程指南
安装Python与pip
Ubuntu系统通常预装Python3,但需手动确认并安装pip(Python包管理工具)。通过以下命令完成安装:
sudo apt update
sudo 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 pd
df_csv = pd.read_csv('data.csv') # 读取CSV文件
df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1') # 读取Excel文件
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)
数据清洗与预处理
原始数据通常存在缺失值、重复值或格式不一致等问题,需通过以下操作清理:
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 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()
相关性分析
使用热力图展示数值列之间的相关性,帮助识别变量间的关联:
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_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}')
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 # 激活环境
Dask与PySpark(大数据处理)
当数据量超过内存限制时,可使用Dask(并行计算库)或PySpark(分布式计算框架)处理大规模数据:
import dask.dataframe as dd
ddf = dd.from_pandas(df, npartitions=4) # 分成4个分区
mean = ddf['column'].mean().compute() # 计算均值(触发实际计算)
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]