你是否曾经面对一个全新的数据集,苦苦思索如何能更快地理解它?你并不孤单。
作为数据专业人士,我们都遇到过这样的情形——盯着数据集发呆,明知道里面藏着有用的信息。这时,Pandas一行代码的妙用就体现出来了。
在本文中,我们将介绍10个用于探索性数据分析的实用Pandas一行代码技巧,并以Seaborn的flights数据集为例进行演示。
Google Colab笔记本链接
快速了解数据集概况
这个简单命令可以让你全面了解数据集:包括行列数、列名、数据类型以及非空数据量。它可以帮助你立刻发现潜在的缺失值,并了解数据结构。
flights.info()
输出:
RangeIndex: 144 entries, 0 to 143
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 year 144 non-null int64
1 month 144 non-null category
2 passengers 144 non-null int64
dtypes: category(1), int64(2)
memory usage: 2.9 KB
检查缺失值
缺失数据会显著影响分析结果。下面的一行代码可以统计每一列的缺失值数量,帮助你决定如何处理它们。
flights.isna().sum()
输出:
year 0
month 0
passengers 0
dtype: int64
很棒!这个数据集没有缺失值。
生成统计摘要
该命令为所有列生成详细的统计摘要,包括计数、均值、标准差、最小值、最大值和四分位数(适用于数值型数据),以及类别型数据的有用信息。
flights.describe()
输出:
year passengers
count 144.000000 144.000000
mean 1954.500000 280.298611
std 3.464102 119.966317
min 1949.000000 104.000000
25% 1951.750000 180.000000
50% 1954.500000 265.500000
75% 1957.250000 360.500000
max 1960.000000 622.000000
查看类别列的唯一值
理解类别变量的基数很重要。下面的一行代码会返回每个类别型列的唯一值数量(以字典形式返回)。
{col: flights[col].nunique() for col in flights.select_dtypes(include=['category', 'object']).columns}
输出:
{'month': 12}
可以看到,月份有12个唯一值,正如预期。
查找变量间的相关性
这行代码计算所有数值型变量的相关性矩阵,帮助你辨别变量间的关系。
flights.corr()
分组聚合统计
该一行代码按类别变量分组,并一次性计算多个统计量。
flights.groupby('month')['passengers'].agg(['mean', 'min', 'max', 'std'])
输出:
mean min max std
month
Jan 241.750000 112 417 101.032960
Feb 235.000000 118 391 89.619397
Mar 270.166667 132 419 100.559194
Apr 267.083333 129 461 107.374839
May 271.833333 121 472 114.739890
Jun 311.666667 135 535 134.219856
Jul 351.333333 148 622 156.827255
Aug 351.083333 148 606 155.783333
Sep 302.416667 136 508 123.954140
Oct 266.583333 119 461 110.744964
Nov 232.833333 104 390 95.185783
Dec 261.833333 118 432 103.093808
可以看出乘客数量存在季节性波动,每月平均值也不同。
用IQR方法识别异常值
这行代码使用四分位距(IQR)方法识别异常值。低于Q1 - 1.5IQR或高于Q3 + 1.5IQR的值被认为是异常值。
Q1, Q3 = flights['passengers'].quantile(0.25), flights['passengers'].quantile(0.75)
flights[(flights['passengers'] < Q1 - 1.5 * (Q3 - Q1)) | (flights['passengers'] > Q3 + 1.5 * (Q3 - Q1))]
结果显示,该数据集中没有异常值。
绘制时间序列趋势图
对时间序列数据来说,趋势可视化至关重要。该一行代码可绘制乘客数量随年份变化的趋势图。
flights.plot(x='year', y='passengers', figsize=(12, 6), title='Passenger Trend Over Time')
输出为一条显示乘客数量随时间变化趋势的折线图。
计算环比变化
该命令计算前一周期的百分比变化,帮助你理解增长率。
flights.assign(pct_change=flights['passengers'].pct_change() * 100)
输出:
year month passengers pct_change
0 1949 Jan 112 NaN
1 1949 Feb 118 5.357143
2 1949 Mar 132 11.864407
3 1949 Apr 129 -2.272727
4 1949 May 121 -6.201550
... ... ... ... ...
139 1960 Aug 606 -2.572347
140 1960 Sep 508 -16.171617
141 1960 Oct 461 -9.251969
142 1960 Nov 390 -15.401302
143 1960 Dec 432 10.769231
[144 rows x 4 columns]
这展示了每个月乘客数量的环比百分比变化。
创建季节性分解可视化
这行代码将数据转换为以年份为行、月份为列的矩阵,并绘制可视化,展示各年份每月的季节性变化。
flights.pivot(index='year', columns='month', values='passengers').plot(figsize=(14, 8), title='Monthly Passenger Counts by Year')
输出为一张按年份区分的每月乘客数量折线图,揭示了季节性规律。
总结
这10个Pandas一行代码技巧展示了如何利用Pandas进行探索性数据分析。结合这些方法,你可以快速了解任何数据集的结构、内容和模式。
祝你数据分析愉快!
领取专属 10元无门槛券
私享最新 技术干货