数据分析-GroupBy的排序和缺失值处理
数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律?
数据表,时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。数据分析过程中重新调整,重塑数据表是很重要的技巧,此处选择Titanic数据,以及巴黎、伦敦欧洲城市空气质量监测 N O 2 NO_2 NO2数据作为样例。
数据分析
实验数据分析处理,股票序列,时间序列,信号序列,有时候表格的数据需要进行分类,拆分,分组处理,,针对每组进行分类处理,处理后的结果还想汇总起来。这是pandas很常见的使用场景,pandas如何通过groupby,分步骤进行数据分类、处理、汇总呢?
GroupBy 排序参数
默认情况下,组键在操作过程中进行排序。但是还有一种潜在的加速方法。设定参数,groupby``sort=False``sort=False
,组键之间的顺序遵循键在原始数据帧中的出现顺序:
python
In [1]: df2 = pd.DataFrame({"X": ["B", "B", "A", "A"], "Y": [1, 2, 3, 4]})
In [2]: df2.groupby(["X"]).sum()
Out[2]:
Y
X
A 7
B 3
In [3]: df2.groupby(["X"], sort=False).sum()
Out[3]:
Y
X
B 3
A 7
请注意,groupby
将保留每个组内观测值 的排序顺序。 例如,下面groupby()
创建的组,按它们在原DataFrame
中出现的顺序排列:
python
In [4]: df3 = pd.DataFrame({"X": ["A", "B", "A", "B"], "Y": [1, 4, 3, 2]})
In [5]: df3.groupby("X").get_group("A")
Out[5]:
X Y
0 A 1
2 A 3
In [6]: df3.groupby(["X"]).get_group(("B",))
Out[6]:
X Y
1 B 4
3 B 2
GroupBy 是否丢弃缺失值
默认情况下,NA
在groupby
操作过程中,NA
值会从组键中排除。然而, 如果要在组键中保留值,则可以通过dropna=False
来实现它。
python
In [28]: df_list = [[1, 2, 3], [1, None, 4], [2, 1, 3], [1, 2, 2]]
In [29]: df_dropna = pd.DataFrame(df_list, columns=["a", "b", "c"])
In [30]: df_dropna
Out[30]:
a b c
0 1 2.0 3
1 1 NaN 4
2 2 1.0 3
3 1 2.0 2
python
# Default ``dropna`` is set to True, which will exclude NaNs in keys
In [31]: df_dropna.groupby(by=["b"], dropna=True).sum()
Out[31]:
a c
b
1.0 2 3
2.0 2 5
# In order to allow NaN in keys, set ``dropna`` to False
In [32]: df_dropna.groupby(by=["b"], dropna=False).sum()
Out[32]:
a c
b
1.0 2 3
2.0 2 5
NaN 1 4
参数的默认设置是dropna``True
,组键中不包含NA
的那些值的操作。
以上代码只是一个简单示例,示例代码中的表达式可以根据实际问题进行修改。
后续介绍下其他的操作。
觉得有用 收藏 收藏 收藏
点个赞 点个赞 点个赞
End
GPT专栏文章:
GPT实战系列-ChatGLM3本地部署CUDA11+1080Ti+显卡24G实战方案
GPT实战系列-LangChain + ChatGLM3构建天气查询助手
GPT实战系列-大模型为我所用之借用ChatGLM3构建查询助手
GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(二)
GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(一)
GPT实战系列-ChatGLM2部署Ubuntu+Cuda11+显存24G实战方案