第二节课堂简介
讲师:杨晨旭
日期:2024.7.15
内容:pandas的入门以及简单的数据分析实践
pandas入门
pandas
是一个强大的 Python 数据分析库,专门用于数据清洗、数据处理和数据分析。它提供了高效的数据结构和数据操作工具,帮助用户处理复杂的数据操作任务。在本次课程中我们进行了pandas的入门学习,对这个强大的数据分析工具有了初步的了解和认识。以下是一些本人对pandas
的入门知识总结:
-
基本概念:
- Series:一维数据结构,可以存储任何数据类型(整数、字符串等)。类似于 Python 的列表或一维数组。
- DataFrame:二维数据结构,类似于表格或电子表格。由行和列组成,每列可以是不同的数据类型。
-
创建数据结构:
- Series 可以通过列表、字典或标量值创建。
import pandas as pd s = pd.Series([1, 2, 3, 4]) s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
- DataFrame 可以通过字典、列表的列表、字典的列表等方式创建。
data = {'A': [1, 2, 3], 'B': [4, 5, 6]} df = pd.DataFrame(data)
- Series 可以通过列表、字典或标量值创建。
-
数据操作:
-
查看数据:使用
head()
和tail()
方法查看数据的前几行或后几行。df.head() # 查看前五行 df.tail() # 查看后五行
-
选择数据:可以通过标签或位置选择数据。
df['A'] # 选择列 'A' df.loc[0] # 通过行标签选择行 df.iloc[0] # 通过行位置选择行
-
过滤数据:根据条件筛选数据。
df[df['A'] > 1]
-
-
数据清洗:
-
处理缺失值:使用
dropna()
或fillna()
方法。df.dropna() # 删除含有缺失值的行 df.fillna(0) # 用0填充缺失值
-
去重:使用
drop_duplicates()
方法。df.drop_duplicates()
-
-
数据聚合与统计:
统计计算:可以使用mean()
,sum()
,describe()
等方法进行基本的统计分析。-
df.mean() # 计算均值 df.describe() # 生成统计描述
-
-
数据排序:
排序数据:使用sort_values()
方法对数据进行排序。-
df.sort_values(by='A')
-
-
数据导入与导出:
-
读取数据:使用
read_csv()
,read_excel()
等方法导入数据。df = pd.read_csv('data.csv')
-
保存数据:使用
to_csv()
,to_excel()
等方法导出数据。df.to_csv('output.csv')
-
这些是 pandas
的一些基础知识,掌握了这些,我们可以对数据进行简单的分析处理并且开始进行更复杂的数据分析任务了。
简单数据分析实战
介绍:
这门课程的主要目的是通过真实的数据,以实战的方式了解数据分析的流程和熟悉数据分析python的基本操作。知道了课程的目的之后,我们开始数据分析的实战教学,完成了kaggle上泰坦尼克的任务,实战数据分析全流程。
简单的流程暂不赘述,主要来分享我在此次实战中受讲师引导激发的思考以及其他想法。
对实战流程的思考及想法
数据之间的关系
首先,对经过排序处理后的数据进行观察,票价对存活概率的影响可能较大,因为较高的票价通常与更高的客舱等级相关,这可能提供了更好的生存条件。年龄对存活概率的影响也是一个重要因素。 例如,儿童和老年人可能有更高的生存机会。
那么如何用数据分析的方法对数据间关系进行科学的描述呢?笔者通过资料阅读总结了以下几种数据间关系分析方法:
1.探索性数据分析
数据分布:
- 直方图:查看单个变量的分布。
- 箱线图:识别数据的分布特征及异常值。
变量之间的关系:
- 散点图:用于可视化两个连续变量之间的关系。
- 相关矩阵:计算变量之间的相关系数,了解它们之间的线性关系。
- 热图:展示相关矩阵或其他数据间关系的可视化效果。
数据分组:
- 分组统计:对数据进行分组,计算统计量(如均值、标准差)来了解不同组之间的差异。
- 数据透视表:通过数据透视表汇总数据,以便于分析和比较不同维度的信息。
2.建模
相关性分析:
- 皮尔逊相关系数:用于度量两个连续变量之间的线性关系,值范围在 -1 到 1 之间。
- 斯皮尔曼秩相关系数:用于度量两个变量的单调关系,适用于非线性关系。
回归分析:
- 线性回归:用于建模一个或多个自变量与因变量之间的线性关系。
- 多项式回归:用于捕捉自变量和因变量之间的非线性关系。
- 逻辑回归:用于处理分类问题,描述自变量对分类结果的影响。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv('data.csv')
# 数据清洗
df = df.dropna() # 删除缺失值
# 探索性数据分析
sns.pairplot(df, hue='target_variable') # 散点图矩阵
plt.show()
# 计算相关矩阵
corr_matrix = df.corr()
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm') # 热图
plt.show()
# 建模
from sklearn.linear_model import LinearRegression
X = df[['feature1', 'feature2']]
y = df['target_variable']
model = LinearRegression()
model.fit(X, y)
# 模型评估
from sklearn.metrics import mean_squared_error
y_pred = model.predict(X)
mse = mean_squared_error(y, y_pred)
print(f'Mean Squared Error: {mse}')
总结
通过这些步骤,我们可以科学地描述数据间的关系。数据准备确保数据的质量,探索性数据分析帮助你理解数据的基本特征,建模揭示数据中的潜在关系。利用这些方法,可以对数据进行全面而深入的分析,从而做出更加科学的决策。
通过对票价数据的分析,我们或许可以制作一个箱线图识别票价 数据的分布特征及异常值。
或许我们也可以将票价数据做出一个扇形图,令数据可视化,直观的观察票价数据的分布情况。
同样的,通过简单的观察,我们可以看出, 一共有891个父母子女个数数据, 平均值约为:0.381594, 标准差约为 0.806057,说明波动不大, 75%的人都没有带父母孩子来, 父母子女个数最大值为6,最小值为0。
除了与上述票价数据的处理方法相似,我们可以从数据间关联的角度出发,探求票价、父母子女个数、生还率的关系。
总结感想
pandas
是一个功能强大、灵活的数据分析库,它不仅让数据操作变得更加高效,还让整个数据处理流程变得更加直观和易于管理。总的来说,学习 pandas
是让我对数据分析处理的能力和理解更上一层楼。它不仅让我提高了数据处理的效率,还帮助我更好地理解了数据分析的流程和方法。pandas
提供的强大功能和灵活的接口使得处理各种数据任务变得更加轻松,也为我未来的工作和研究奠定了坚实的基础。我期待在今后的数据分析中,能够进一步挖掘 pandas
的潜力,提升自己的数据处理能力。并且在后续的课程中继续稳扎稳打的学习实践,加深对pandas和大模型的理解,提高编程水平。