使用Python进行数据分析与可视化:一个完整的实战教程

今天 5阅读

在当今数据驱动的世界中,数据分析和可视化是理解和传达数据背后信息的关键技能。Python作为一种功能强大且易于上手的编程语言,在数据分析领域有着广泛的应用。本文将介绍如何使用Python进行基本的数据分析与可视化操作,并通过一个实际案例展示整个流程。

我们将使用以下Python库:

pandas:用于数据处理和分析。matplotlibseaborn:用于数据可视化。scikit-learn(可选):用于机器学习建模(如需要)。

1. 环境准备

首先,我们需要安装必要的Python包。如果你还没有安装这些库,请使用以下命令进行安装:

pip install pandas matplotlib seaborn scikit-learn

2. 数据集介绍

为了演示目的,我们将使用Kaggle上的“Titanic - Machine Learning from Disaster”数据集。该数据集包含关于泰坦尼克号乘客的信息,目标是预测哪些乘客在事故中幸存下来。

你可以从 Kaggle官网 下载数据集。下载后,你会得到两个CSV文件:train.csvtest.csv。我们主要使用train.csv来进行分析。

3. 数据加载与初步探索

我们首先使用pandas加载数据并查看前几行数据以了解其结构。

import pandas as pd# 加载数据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  

我们可以看到每个乘客有多个特征,包括姓名、性别、年龄、舱位等级等。我们的目标变量是Survived,表示是否存活(1为存活,0为未存活)。

4. 数据清洗与预处理

真实世界的数据通常包含缺失值或格式不一致的问题,因此我们需要进行数据清洗。

4.1 检查缺失值

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

输出示例:

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

可以看到AgeCabin列有很多缺失值。对于本教程,我们先处理AgeEmbarked列。

4.2 填充缺失值

# 填充年龄的缺失值为平均值df['Age'].fillna(df['Age'].mean(), inplace=True)# 填充登船港口的缺失值为出现次数最多的值df['Embarked'].fillna(df['Embarked'].mode()[0], inplace=True)

4.3 特征编码

某些列如SexEmbarked是分类变量,我们需要将其转换为数值形式以便后续建模。

# 将性别映射为数值df['Sex'] = df['Sex'].map({'female': 0, 'male': 1})# 对登船港口进行独热编码df = pd.get_dummies(df, columns=['Embarked'], drop_first=True)

5. 数据可视化

可视化可以帮助我们更好地理解数据之间的关系。

5.1 幸存率按性别分布

import seaborn as snsimport matplotlib.pyplot as pltsns.barplot(x='Sex', y='Survived', data=df)plt.title('Survival Rate by Gender')plt.xlabel('Gender (0 = Female, 1 = Male)')plt.ylabel('Survival Rate')plt.show()

这个条形图显示了男性和女性的幸存率差异。我们可以看到女性的幸存率明显高于男性。

5.2 年龄分布与幸存情况

g = sns.FacetGrid(df, col='Survived')g.map(plt.hist, 'Age', bins=20)plt.show()

这个图表展示了不同年龄段的幸存情况。我们可以观察到儿童的幸存率较高。

6. 构建预测模型(可选)

虽然本文重点在于数据分析与可视化,但作为延伸,我们可以简单构建一个逻辑回归模型来预测幸存情况。

from sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_score# 准备特征与标签X = df[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked_Q', 'Embarked_S']]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)print("Accuracy:", accuracy_score(y_test, y_pred))

输出示例:

Accuracy: 0.782

这个简单的模型达到了约78%的准确率。你可以尝试使用更复杂的模型(如随机森林、梯度提升树等)来提高性能。

7. 总结

在本文中,我们完成了以下任务:

使用pandas加载并清洗了泰坦尼克号乘客数据。探索了数据中的缺失值并进行了相应的处理。使用seabornmatplotlib进行了数据可视化。构建了一个简单的逻辑回归模型来预测幸存情况。

数据分析是一个迭代的过程,涉及数据清洗、探索性分析、建模和验证等多个阶段。Python提供了丰富的工具支持这一过程,使得我们能够高效地从数据中提取价值。


参考文献:

Pandas DocumentationSeaborn DocumentationScikit-learn DocumentationKaggle Titanic Dataset

希望这篇文章能帮助你入门Python数据分析与可视化。欢迎继续深入学习更多高级技巧!

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

目录[+]

您是本站第27248名访客 今日有17篇新文章

微信号复制成功

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