使用Python进行数据分析与可视化:从入门到实战

4分钟前 3阅读

在当今数据驱动的时代,数据分析和可视化已成为各个行业不可或缺的技能。Python凭借其丰富的库(如Pandas、NumPy、Matplotlib 和 Seaborn)成为了数据分析领域的首选语言之一。本文将通过一个完整的案例,带您从读取数据、清洗数据、分析数据到最终的可视化展示,逐步掌握使用Python进行数据分析的基本流程。

环境准备

首先,确保你已经安装了以下Python库:

pip install pandas numpy matplotlib seaborn

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


数据集介绍

我们将使用Kaggle上的“Titanic: Machine Learning from Disaster”数据集。该数据集包含乘客信息及其是否幸存的信息,非常适合用于学习数据清洗、探索性数据分析和建模。

你可以从Kaggle官网下载数据文件 train.csv


导入必要的库

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns# 设置图表风格sns.set(style="whitegrid")

加载数据

# 加载数据df = pd.read_csv('train.csv')# 查看前几行数据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

数据清洗

1. 检查缺失值

# 检查每列的缺失值数量print(df.isnull().sum())

输出:

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

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

2. 处理缺失值

填充年龄(Age)

我们可以用平均值或中位数填充缺失的年龄值:

# 计算年龄中位数并填充median_age = df['Age'].median()df['Age'].fillna(median_age, inplace=True)

删除Cabin列(因为缺失太多)

# 删除Cabin列df.drop('Cabin', axis=1, inplace=True)

填充Embarked缺失值

# 找出最常见的登船港口mode_embarked = df['Embarked'].mode()[0]df['Embarked'].fillna(mode_embarked, inplace=True)

探索性数据分析(EDA)

1. 幸存率与性别关系

# 性别与生存的关系sns.barplot(x='Sex', y='Survived', data=df)plt.title('Survival Rate by Gender')plt.ylabel('Survival Rate')plt.show()

survival_by_gender.png

可以看出女性的幸存率显著高于男性。

2. 幸存率与舱位等级(Pclass)

# 舱位等级与生存的关系sns.barplot(x='Pclass', y='Survived', data=df)plt.title('Survival Rate by Pclass')plt.ylabel('Survival Rate')plt.show()

survival_by_pclass.png

可以发现头等舱乘客的幸存率更高。

3. 年龄分布

# 绘制年龄直方图plt.hist(df['Age'], bins=20, edgecolor='black')plt.title('Age Distribution')plt.xlabel('Age')plt.ylabel('Count')plt.show()

age_distribution.png


特征工程

我们可以构造新的特征,例如家庭成员总数(SibSp + Parch):

# 家庭成员数量df['FamilySize'] = df['SibSp'] + df['Parch']# 查看新特征print(df[['SibSp', 'Parch', 'FamilySize']].head())

输出:

   SibSp  Parch  FamilySize0      1      0           11      1      0           12      0      0           03      1      0           14      0      0           0

构建预测模型(可选)

虽然本文重点是数据分析与可视化,但为了完整性,我们简要演示如何使用Scikit-learn建立一个简单的分类模型来预测生存情况。

from sklearn.model_selection import train_test_splitfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.metrics import accuracy_score# 特征选择features = ['Pclass', 'Sex', 'Age', 'Fare', 'Embarked', 'FamilySize']X = pd.get_dummies(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 = RandomForestClassifier(n_estimators=100, random_state=42)model.fit(X_train, y_train)# 预测y_pred = model.predict(X_test)# 评估accuracy = accuracy_score(y_test, y_pred)print(f"Model Accuracy: {accuracy:.2f}")

输出示例:

Model Accuracy: 0.81

总结

通过本篇文章的学习,我们掌握了以下技能:

如何使用Pandas加载和清洗数据;使用Seaborn和Matplotlib进行基本的数据可视化;构造新的特征以增强模型表现;简单了解如何使用Scikit-learn进行分类建模。

数据分析不仅仅是写代码,更重要的是理解数据背后的故事。希望这篇文章能帮助你迈出数据分析的第一步,并激发你对数据科学的兴趣。


十、参考资料

Kaggle Titanic DatasetPandas DocumentationSeaborn GalleryScikit-learn User Guide

如果你喜欢这篇文章,欢迎点赞、收藏或分享给更多人学习!

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

目录[+]

您是本站第16912名访客 今日有6篇新文章

微信号复制成功

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