Pandas 数据分析必学的 20 个指令(含缺失值处理与可视化)
plot () 是 Pandas 中最基础的可视化指令,默认绘制折线图,也可以通过 kind 参数指定其他图表类型,如折线图('line')、柱状图('bar')、直方图('hist')、散点图('scatter')等。例如,先通过 read_csv () 读取数据,用 info () 和 isnull () 了解数据缺失情况,再用 fillna () 或 dropna () 处理缺失值,接着用
本文将详细介绍 Pandas 数据分析中必学的 20 个指令,涵盖数据读取与查看、数据筛选与排序、数据清洗(尤其是缺失值处理)、数据运算以及数据可视化等多个关键环节。这些指令是数据分析工作的基础,掌握它们能有效提升数据处理效率和分析质量。无论是刚入门的新手,还是有一定经验的从业者,都能通过本文系统学习并熟练运用这些指令,轻松应对各类数据分析任务。
一、数据读取与查看指令
在数据分析的起始阶段,准确读取数据并快速了解数据全貌至关重要,以下几个指令能帮你高效完成这一步骤。
1. read_csv()
这是 Pandas 中最常用的数据读取指令之一,用于读取 CSV 格式的文件。其语法为pd.read_csv('文件路径'),通过指定正确的文件路径,就能将 CSV 文件中的数据加载到 DataFrame 中,方便后续处理。例如,data = pd.read_csv('data.csv')就可将当前目录下的 data.csv 文件读取进来。
2. head()
该指令用于查看 DataFrame 的前几行数据,默认显示前 5 行,也可通过参数指定显示的行数,如data.head(10)会显示前 10 行数据。借助它,能快速对数据的结构、字段分布等有一个初步的认识。
3. tail()
与 head () 相反,tail () 用于查看 DataFrame 的后几行数据,默认显示后 5 行,同样可通过参数指定行数,如data.tail(8)显示后 8 行数据。这有助于了解数据的末尾部分情况,比如是否有异常值或特殊标记。
4. info()
info () 指令能展示 DataFrame 的详细信息,包括索引类型、列名、数据类型、非空值数量等。通过data.info(),可以快速判断数据是否存在缺失以及各列的数据类型是否符合预期,为后续的数据清洗提供依据。
5. describe()
该指令用于生成描述性统计数据,包括计数、均值、标准差、最小值、最大值以及四分位数等。对于数值型数据,data.describe()能让我们快速了解数据的分布特征,如数据的集中趋势、离散程度等。
二、数据筛选与排序指令
对数据进行筛选和排序,能帮助我们聚焦于关键信息,以下是几个常用的指令。
6. loc[]
loc [] 用于通过行标签和列标签来筛选数据,语法为data.loc[行标签, 列标签]。例如,data.loc[0:5, ['name', 'age']]会筛选出第 0 到 5 行中 name 和 age 列的数据。它的优点是可以精确地根据标签选取数据,灵活性较高。
7. iloc[]
iloc [] 与 loc [] 类似,但它是通过行索引和列索引来筛选数据,索引从 0 开始。语法为data.iloc[行索引, 列索引],如data.iloc[0:5, 0:2]会选取第 0 到 5 行、第 0 到 2 列的数据。在不知道数据标签只知道位置时,iloc [] 非常实用。
8. sort_values()
sort_values () 用于对 DataFrame 按照指定列的值进行排序,语法为data.sort_values(by='列名', ascending=True/False),其中 ascending=True 表示升序,False 表示降序。例如,data.sort_values(by='age', ascending=False)会按照 age 列的值降序排列数据,便于我们找出最大值或按顺序查看数据。
9. query()
query () 允许使用字符串表达式来筛选数据,语法为data.query('条件表达式')。例如,data.query('age > 30 and score > 80')会筛选出 age 大于 30 且 score 大于 80 的数据。这种方式筛选条件表达更直观,尤其适用于复杂条件的筛选。
三、缺失值处理指令
数据中存在缺失值是常见现象,妥善处理缺失值对分析结果的准确性至关重要,以下指令能有效应对这一问题。
10. isnull()/notnull()
isnull () 用于检测数据中的缺失值,返回一个布尔型 DataFrame,缺失值对应位置为 True,否则为 False;notnull () 则相反,缺失值对应位置为 False,否则为 True。通过data.isnull()或data.notnull(),可以快速了解缺失值的分布情况,如data.isnull().sum()能统计每列的缺失值数量。
11. dropna()
dropna () 用于删除包含缺失值的行或列,语法为data.dropna(axis=0/1, how='any'/all, thresh=n)。其中 axis=0 表示删除行,axis=1 表示删除列;how='any' 表示只要有一个缺失值就删除,how='all' 表示所有值都缺失才删除;thresh=n 表示至少有 n 个非缺失值才保留。例如,data.dropna(axis=0, how='any')会删除所有包含缺失值的行。
12. fillna()
fillna () 用于填充缺失值,语法为data.fillna(value, inplace=True/False)。value 可以是具体的值、均值、中位数等,inplace=True 表示在原 DataFrame 上修改,False 则返回一个新的 DataFrame。例如,data['age'].fillna(data['age'].mean(), inplace=True)会用 age 列的均值填充该列的缺失值。
四、数据运算指令
对数据进行各类运算,能深入挖掘数据中的信息,以下是常用的运算指令。
13. groupby()
groupby () 用于按照指定列对数据进行分组,然后可以对分组后的数据进行聚合运算,如求和、均值等。语法为data.groupby('分组列名').聚合函数()。例如,data.groupby('gender')['score'].mean()会按 gender 分组,计算每组 score 的均值,便于分析不同组之间的差异。
14. merge()
merge () 用于将两个 DataFrame 按照指定的列进行合并,类似于数据库中的连接操作。语法为pd.merge(df1, df2, on='连接列名', how='inner'/outer/left/right)。how 参数指定连接方式,inner 为内连接,outer 为外连接,left 为左连接,right 为右连接。例如,pd.merge(df1, df2, on='id', how='inner')会根据 id 列将 df1 和 df2 进行内连接。
15. concat()
concat () 用于将多个 DataFrame 或 Series 进行拼接,可以沿行或列方向。语法为pd.concat([df1, df2,...], axis=0/1),axis=0 表示沿行拼接(纵向拼接),axis=1 表示沿列拼接(横向拼接)。例如,pd.concat([df1, df2], axis=0)会将 df2 拼接在 df1 的下方。
16. apply()
apply () 用于对 DataFrame 的行或列应用自定义函数,语法为data.apply(函数名, axis=0/1)。例如,定义一个函数def func(x): return x.max() - x.min(),然后data.apply(func, axis=0)会计算每列的极差(最大值减最小值)。apply () 的灵活性很高,能满足各种自定义的运算需求。
五、数据可视化指令
数据可视化能让数据更加直观易懂,Pandas 结合 Matplotlib 等库提供了便捷的可视化指令。
17. plot()
plot () 是 Pandas 中最基础的可视化指令,默认绘制折线图,也可以通过 kind 参数指定其他图表类型,如折线图('line')、柱状图('bar')、直方图('hist')、散点图('scatter')等。语法为data.plot(kind='图表类型', x='x轴列名', y='y轴列名')。例如,data.plot(kind='bar', x='name', y='score')会绘制以 name 为 x 轴、score 为 y 轴的柱状图。
18. hist()
hist () 专门用于绘制直方图,用于展示数据的分布情况。语法为data['列名'].hist(bins=n),bins 参数指定直方图的箱数。例如,data['age'].hist(bins=10)会绘制 age 列的直方图,将数据分为 10 个箱,直观展示年龄的分布。
19. boxplot()
boxplot () 用于绘制箱线图,能展示数据的五数概括(最小值、下四分位数、中位数、上四分位数、最大值)以及异常值。语法为data.boxplot(column='列名', by='分组列名')。例如,data.boxplot(column='score', by='gender')会按 gender 分组,绘制每组 score 的箱线图,便于比较不同组数据的分布差异和异常值情况。
20. scatter()
scatter () 用于绘制散点图,探究两个变量之间的关系。语法为data.plot.scatter(x='x列名', y='y列名')。例如,data.plot.scatter(x='study_time', y='score')会绘制学习时间和分数的散点图,通过观察点的分布可以判断两者是否存在相关关系。
总结
本文介绍的 20 个 Pandas 指令,涵盖了数据分析从数据读取、查看,到筛选、排序、缺失值处理、数据运算,再到数据可视化的全流程。这些指令是数据分析工作的核心工具,掌握它们能让我们在处理数据时更加高效、准确。
在实际应用中,这些指令往往需要结合使用。例如,先通过 read_csv () 读取数据,用 info () 和 isnull () 了解数据缺失情况,再用 fillna () 或 dropna () 处理缺失值,接着用 groupby () 进行分组分析,最后用 plot () 等指令将结果可视化呈现。
通过不断练习和实践,熟练运用这些指令,能帮助我们更好地挖掘数据背后的信息,为决策提供有力支持。无论是进行学术研究、商业分析还是其他领域的数据处理,这些 Pandas 指令都能发挥重要作用,是每个数据分析从业者必须掌握的技能。
更多推荐
所有评论(0)