Pandas df.iloc/df.loc 等方法在大型数据集上采用for 循环读取数据速度慢

项目场景:

提示:这里简述项目相关背景:

对有超过200w条数据的dataframe中数据进行预处理

工具:python 3.10.9, Jupyter notebook


问题描述

提示:这里描述项目中遇到的问题:

for循环速度极慢,10分钟未见报错/结果

代码形如:

for i in range(len(df)):
	l = []
    l.append(df.iloc[i][0])```

原因分析:

pandas.iloc方法速度慢,这一点在数据量小的情况下难以在不监测的情况下体现,但是在数据量较大时会出现耗时过长


解决方案:

将data frame 转换成字典

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用DataFrame类的lociloc方法获取最大的20个数据,代码示例如下:df.sort_values('column_name', ascending=False).head(20).loc[:, ['column_name']] ### 回答2: 要使用Pandas库的DataFrame类的lociloc方法截取最大的20个数据,可以按照以下步骤进行操作: 1. 首先,导入Pandas库并读取数据集,将其存储为一个DataFrame对象。例如,可以使用以下代码读取名为data的数据集: ```python import pandas as pd data = pd.read_csv("data.csv") ``` 2. 接下来,根据需要截取最大的20个数据。如果你想要基于某一列的值进行排序,并截取最大的20个数据,你可以使用sort_values方法。例如,假设你想要基于"column_name"列的值进行排序,可以使用以下代码: ```python sorted_data = data.sort_values(by="column_name", ascending=False) top_20 = sorted_data.head(20) ``` 3. 如果你仅想要基于DataFrame对象的索引进行截取,可以使用iloc方法。示例如下: ```python top_20 = data.iloc[:20] ``` 这将截取DataFrame对象中的前20行数据。 4. 如果要按照特定的条件截取最大的20个数据,你可以使用loc方法。例如,如果你想要基于"column_name"列的值大于某个特定值进行筛选,可以使用以下代码: ```python top_20 = data.loc[data["column_name"] > threshold].head(20) ``` 这将筛选出"column_name"列中大于阈值的数据,并截取最大的20个数据。 总之,根据具体需求,你可以根据值的大小进行排序,或者根据条件进行筛选,然后使用sort_values、head、ilocloc方法截取最大的20个数据。 ### 回答3: 使用Pandas库的DataFrame类的lociloc方法截取最大的20个数据可以按照以下步骤进行: 1. 首先,确保已经导入了Pandas库,并创建了一个DataFrame对象,假设对象名为df。 2. 使用sort_values()方法按照指定的列对DataFrame进行排序。假设我们要按照列名为'column_name'的列进行排序,则可以使用以下代码: df_sorted = df.sort_values(by='column_name', ascending=False) 3. 使用head()方法截取排序后的DataFrame的前20行。这将选择DataFrame的前20个最大值(根据排序条件)。代码示例如下: df_top20 = df_sorted.head(20) 4. 如果想要选择DataFrame中的特定列,可以在lociloc方法中使用切片操作。例如,要选择第一列和第三列,可以使用如下代码: df_top20_selected = df_top20.iloc[:, [0, 2]].copy() 这将获取df_top20的第一列和第三列的数据,并创建一个新的DataFrame对象df_top20_selected。 5. 最后,可以根据需要对df_top20_selected进行进一步的处理,例如可视化、分析等。 总结起来,使用Pandas库的DataFrame类的lociloc方法截取最大的20个数据需要进行排序、截取和选择列的操作。首先排序并截取前20行,然后根据需要选择特定的列。这样就可以获取到DataFrame中最大的20个数据,并对其进一步处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HENRIETTA's NOTES

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值