我有一些文本文件,比如50,我需要读入一个巨大的数据框。 目前,我正在使用以下步骤。 阅读每个文件,并检查标签是什么。 我需要的信息通常包含在前几行中。 相同的标签只是为文件的其余部分重复,每次都列出不同types的数据。 用这些标签创build一个数据框。 再次读取文件并填充dataframe。 将该dataframe与主dataframe连接起来。 对于文件大小为100 KB的文件来说,这种方法非常有效 – 几分钟,但在50 MB的文件中,只需要几个小时,而且不实用。 我如何优化我的代码? 尤其是 – 我怎样才能确定哪些function花费最多的时间,我需要优化? 这是文件的阅读吗? 是写入数据框吗? 我的课程在哪里花费时间? 我应该考虑multithreading还是多处理? 我可以改进algorithm吗? 也许读一个列表中的整个文件,而不是一行一行, 以块/整个文件parsing数据,而不是逐行parsing, 将数据以块/一次分配给dataframe,而不是逐行分配。 还有什么我可以做,让我的代码执行更快? 这是一个示例代码。 我自己的代码稍微复杂一些,因为文本文件比较复杂,所以我必须使用大约10个正则expression式和多个while循环来读取数据并将其分配到正确的数组中。 为了保持MWE简单,我还没有在MWE的input文件中使用重复标签,所以它会让我无故读取文件两次。 我希望这是有道理的! import re import pandas as pd df = pd.DataFrame() paths = ["../gitignore/test1.txt", "../gitignore/test2.txt"] reg_ex = re.compile('^(.+) (.+)\n') # read all files to determine what indices […]
我有一种情况,其中有时当我从df读取一个csv ,我得到一个名为unnamed:0的不需要索引的列。 这很烦人! 我努力了 merge.to_csv('xy.df', mode = 'w', inplace=False) 我认为这是一个解决scheme,但我仍然得到unnamed:0列! 有没有人有这个想法?
如果我想计算pandas的两个类别的平均值,我可以这样做: data = {'Category': ['cat2','cat1','cat2','cat1','cat2','cat1','cat2','cat1','cat1','cat1','cat2'], 'values': [1,2,3,1,2,3,1,2,3,5,1]} my_data = DataFrame(data) my_data.groupby('Category').mean() Category: values: cat1 2.666667 cat2 1.600000 我有很多这样格式化的数据,现在我需要做一个T -test来看看cat1和cat2的平均值是否有统计学差异。 我怎样才能做到这一点?
在ipython Notebook中,首先创build一个pandas系列对象,然后通过调用实例方法.hist(),浏览器显示graphics。 我想知道如何将这个数字保存到一个文件(我的意思是不是通过右键单击并另存为,但在脚本中需要的命令)。
我正在从R转换到Python。 我刚开始使用pandas。 我有一个很好的子集R代码: k1 <- subset(data, Product = p.id & Month < mn & Year == yr, select = c(Time, Product)) 现在,我想用Python做类似的东西。 这是我到目前为止: import pandas as pd data = pd.read_csv("../data/monthly_prod_sales.csv") #first, index the dataset by Product. And, get all that matches a given 'p.id' and time. data.set_index('Product') k = data.ix[[p.id, 'Time']] # then, index this […]
我有2个数据框: restaurant_ids_dataframe Data columns (total 13 columns): business_id 4503 non-null values categories 4503 non-null values city 4503 non-null values full_address 4503 non-null values latitude 4503 non-null values longitude 4503 non-null values name 4503 non-null values neighborhoods 4503 non-null values open 4503 non-null values review_count 4503 non-null values stars 4503 non-null values state 4503 non-null values […]
有没有办法select一个pandasDataFrame对象中的所有列,但只有一列? 我已经看到删除列的方法,但我不想这样做。
我可能做的很愚蠢,但是我很难过。 我有一个数据框,我想replace特定列中的值超过一个值为零。 我原以为这是达到这个目的的一种方式: df[df.my_channel > 20000].my_channel = 0 如果我将通道复制到一个新的数据框中,这很简单: df2 = df.my_channel df2[df2 > 20000] = 0 这确实是我想要的,但似乎不作为原始数据框的一部分与通道一起工作。 感谢提前。 本
我有一个pythonpandasDataFrame具有布尔True / False值的列,但为了进一步计算,我需要1/0表示。 有没有一个快速的pandas/ numpy的方式来做到这一点? 编辑:下面的答案似乎并没有举行的情况下numpy,给定一个数组与整数和True / False值,返回这样的数组dtype=object 。 为了在numpy中继续进行计算,我必须明确地设置np_values = np.array(df.values, dtype = np.float64) 。
在过去的几年中,有几篇文章涉及到pandas.apply()的parallelization ,或者是描述可以通过将数据结构化为数据pandas.apply()来解决的问题,以及如果实现了parallelization ,使用pandas.apply() 。 我向这里的专家们提出这个问题,这个能力的状态是什么, R已经有了这个能力。 目前没有干净的标准解决scheme。 重新编写整个函数和脚本来处理build议的解决方法是非常繁琐的。 Pythonpandas多处理应用 并行化后,pandasgroupby R中的并行和多核处理 Python多处理pool.map多个参数 在Python中的并行处理 通过multiprocessing.pool.map传递kwargs 传递参数和manager.dict在Python 2.7中的多处理 有没有一个简单的基于进程的python平行映射? pandas与rpy2和多处理 如何通过Sparkasynchronous地将函数应用于数据框的子集? 高效地将一个函数应用到分组的pandasDataFrame上 python dask DataFrame,支持(trivially parallelizable)row apply? Python多处理作业Celery任务,但AttributeError 在pandas python中并行化应用函数 在groupby上工作