gpt4 book ai didi

python - Pandas 大 CSV

转载 作者:太空宇宙 更新时间:2023-11-03 15:07:38 25 4
gpt4 key购买 nike

上一篇文章的延续。以前,我曾帮助使用 Pandas 在数据框中创建一个新列,每个值都代表基于另一列值的因式分解或唯一值。我在测试用例中使用了它并且它成功地工作了,但是我在使用更大的日志和 htm 文件来执行相同的过程时遇到了麻烦。我有 12 个日志文件(每个月),将它们合并后,我得到一个 17Gb 的文件可供使用。我想分解其中的每个用户名。我一直在考虑使用 Dask,但是,我无法复制排序和分解的功能来完成我想要的 Dask 数据框操作。尝试使用 Dask、继续使用 Pandas 还是尝试使用 MySQL 数据库来操作 17GB 文件会更好吗?

import pandas as pd
import numpy as np
#import dask.dataframe as pf
df = pd.read_csv('example2.csv', header=0, dtype='unicode')
df_count = df['fruit'].value_counts()
df.sort_values(['fruit'], ascending=True, inplace=True)
sorting the column fruit
df.reset_index(drop=True, inplace=True)
f, u = pd.factorize(df.fruit.values)
n = np.core.defchararray.add('Fruit', f.astype(str))
df = df.assign(NewCol=n)
#print(df)
df.to_csv('output.csv')

最佳答案

Would it be better to try to use Dask, continue with Pandas or try with a MySQL database to manipulate a 17GB file?

这个问题的答案取决于很多因素,而且可能过于笼统,无法在 Stack Overflow 上得到好的答案。

但是,您提出的一些具体问题更容易回答

How do I factorize a column?

这里最简单的方法是对列进行分类:

df = df.categorize(columns=['fruit'])

How do I sort unique values within a column

您始终可以将列设置为索引,这将导致排序。但请注意,在分布式环境中进行排序可能会非常昂贵。

但是,如果您想对包含少量选项的列进行排序,那么您可能会找到唯一值,在内存中对这些值进行排序,然后将它们连接回数据帧。像下面这样的东西可能会起作用:

unique_fruit = df.fruit.drop_duplicates().compute()  # this is now a pandas series
unique_fruit = unique_fruit.sort_values()
numbers = pd.Series(unique_fruit.index, index=unique_fruit.values, name='fruit')

df = df.merge(numbers.to_frame(), left_on='fruit', right_index=True)

关于python - Pandas 大 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44507512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com