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]