使用Python进行数据分析:从基础到实践

今天 3阅读

在当今大数据时代,数据分析已成为各个领域不可或缺的一部分。无论是金融、医疗、互联网还是制造业,数据驱动的决策能够帮助企业更高效地运营和优化产品。本文将通过一个完整的案例,介绍如何使用 Python 进行数据分析,并展示实际代码实现。我们将使用 pandasmatplotlibseaborn 等常用的数据分析库,完成从数据加载、清洗、探索性分析到可视化的一整套流程。

环境准备

首先,确保你的环境中安装了以下 Python 库:

pip install pandas matplotlib seaborn

我们将在 Jupyter Notebook 或任意 Python IDE 中运行以下代码。


数据集简介

我们将使用 Kaggle 上的泰坦尼克号乘客数据集,该数据集包含乘客的基本信息(如年龄、性别、船舱等级等)以及是否幸存的信息。目标是通过这些特征预测乘客是否幸存。

下载文件 train.csv 并保存到当前工作目录中。


导入必要的库与数据加载

import pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns# 设置显示样式sns.set(style="whitegrid")# 加载数据df = pd.read_csv("train.csv")# 查看前5行数据print(df.head())

输出结果如下(可能略有不同):

   PassengerId  Survived  Pclass  \0            1         0       3   1            2         1       1   2            3         1       3   3            4         1       1   4            5         0       3                                                   Name     Sex   Age  SibSp  \0                            Braund, Mr. Owen Harris    male  22.0      1   1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   2                             Heikkinen, Miss. Laina  female  26.0      0   3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   4                           Allen, Mr. William Henry    male  35.0      0      Parch            Ticket        Fare Cabin Embarked  0      0         A/5 21171    7.2500   NaN        S  1      0          PC 17599   71.2833   C85        C  2      0  STON/O2. 3101282    7.9250   NaN        S  3      0            113803   53.1000  C123        S  4      0            373450    8.0500   NaN        S

数据清洗

真实世界的数据往往存在缺失值或格式不一致的问题,我们需要对数据进行预处理。

4.1 检查缺失值

print(df.isnull().sum())

输出示例:

PassengerId      0Survived         0Pclass           0Name             0Sex              0Age            177SibSp            0Parch            0Ticket           0Fare             0Cabin          687Embarked         2dtype: int64

可以看到,AgeCabin 字段存在大量缺失值。

4.2 填充缺失值

我们用平均值填充 Age,删除 Cabin 列(因为缺失太多),并用众数填充 Embarked

# 填充年龄缺失值df['Age'].fillna(df['Age'].mean(), inplace=True)# 删除 Cabin 列df.drop('Cabin', axis=1, inplace=True)# 填充 Embarked 缺失值df['Embarked'].fillna(df['Embarked'].mode()[0], inplace=True)# 再次检查缺失值print(df.isnull().sum())

探索性数据分析(EDA)

5.1 生还率统计

survival_rate = df['Survived'].value_counts(normalize=True)print(f"生还率:\n{survival_rate}")

输出示例:

生还率:0    0.5796301    0.420370Name: Survived, dtype: float64

约 42% 的乘客幸存。

5.2 性别与生还率关系

plt.figure(figsize=(6, 4))sns.barplot(x='Sex', y='Survived', data=df)plt.title('性别与生还率')plt.show()

性别与生还率

可以看出女性的生还率显著高于男性。

5.3 船舱等级与生还率关系

plt.figure(figsize=(6, 4))sns.barplot(x='Pclass', y='Survived', data=df)plt.title('船舱等级与生还率')plt.show()

船舱等级与生还率

结果显示,船舱等级越低(数值越大),生还率越低。


特征工程

为了便于模型训练,我们需要将分类变量转换为数值型。

# 将性别映射为 0 和 1df['Sex'] = df['Sex'].map({'female': 1, 'male': 0})# one-hot 编码 Embarkeddf = pd.get_dummies(df, columns=['Embarked'], drop_first=True)# 查看处理后的特征print(df.head())

建模预测(简单逻辑回归)

我们将使用 Scikit-learn 构建一个简单的逻辑回归模型来预测乘客是否幸存。

from sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_score# 特征选择features = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked_Q', 'Embarked_S']X = df[features]y = df['Survived']# 数据划分X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 训练模型model = LogisticRegression(max_iter=200)model.fit(X_train, y_train)# 预测与评估y_pred = model.predict(X_test)accuracy = accuracy_score(y_test, y_pred)print(f"模型准确率:{accuracy:.2f}")

输出示例:

模型准确率:0.78

虽然这个模型比较简单,但已经达到了 78% 的准确率。


总结与展望

本文介绍了使用 Python 进行数据分析的基本流程,包括:

数据加载与清洗;探索性数据分析(EDA);特征工程;简单建模与评估。

虽然我们仅使用了逻辑回归模型,但在实际项目中可以尝试更复杂的模型,如随机森林、梯度提升树(XGBoost、LightGBM)等,以获得更高的预测精度。

未来,我们可以进一步深入以下方向:

特征构造(Feature Engineering);自动化数据管道构建;使用深度学习进行端到端建模;部署模型为 Web API 服务。

希望本文能为你入门数据分析提供一个清晰的路线图和技术实践参考。


完整源码地址:你可以将上述所有代码整合成一个 .py 文件或 Jupyter Notebook 执行。如果你希望获取完整可运行的代码,请联系我获取 GitHub 示例仓库链接。


作者:AI助手 | 技术博客 | Python 数据分析实战

免责声明:本文来自网站作者,不代表CIUIC的观点和立场,本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。客服邮箱:ciuic@ciuic.com

目录[+]

您是本站第10565名访客 今日有23篇新文章

微信号复制成功

打开微信,点击右上角"+"号,添加朋友,粘贴微信号,搜索即可!