小编Gab*_*nte的帖子

在python中读取1500万行csv文件的有效方法

对于我的应用程序,我需要读取每个15 M行的多个文件,将它们存储在DataFrame中,然后以HDFS5格式保存DataFrame。

我已经尝试了不同的方法,特别是punks.read_csv(具有chunksize和dtype规范)和dask.dataframe。它们都需要大约90秒才能处理1个文件,因此我想知道是否有一种方法可以按所述方式有效处理这些文件。在下面的代码中,我展示了一些我已经完成的测试代码。

import pandas as pd
import dask.dataframe as dd
import numpy as np
import re 

# First approach
store = pd.HDFStore('files_DFs.h5')

chunk_size = 1e6

df_chunk = pd.read_csv(file,
                sep="\t",
                chunksize=chunk_size,
                usecols=['a', 'b'],
                converters={"a": lambda x: np.float32(re.sub(r"[^\d.]", "", x)),\
                            "b": lambda x: np.float32(re.sub(r"[^\d.]", "", x))},
                skiprows=15
           )              
chunk_list = [] 


for chunk in df_chunk:
      chunk_list.append(chunk)


df = pd.concat(chunk_list, ignore_index=True)

store[dfname] = df
store.close()

# Second approach

df = dd.read_csv(
        file,
        sep="\t",
        usecols=['a', 'b'],
        converters={"a": lambda x: np.float32(re.sub(r"[^\d.]", "", x)),\
                    "b": …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas dask

15
推荐指数
1
解决办法
912
查看次数

为什么在此双积分代码中使用 double 而不是 float 会给出错误的结果?

我在此页面中找到了以下代码来计算二重积分。每当我在所有变量都声明为 的情况下运行它时float,它都会给出示例积分的正确结果,即 3.91905。但是,如果我只是将所有float变量更改为double,则程序会针对该积分给出完全错误的结果 ( 2.461486)。

你能帮我理解为什么会发生这种情况吗?我希望使用精度能得到更好的结果double,但这里的情况显然并非如此。

以下是从上述网站粘贴的代码。

// C++ program to calculate
// double integral value

#include <bits/stdc++.h>
using namespace std;

// Change the function according to your need
float givenFunction(float x, float y)
{
    return pow(pow(x, 4) + pow(y, 5), 0.5);
}

// Function to find the double integral value
float doubleIntegral(float h, float k,
                    float lx, float ux,
                    float ly, float uy)
{
    int nx, ny;

    // …
Run Code Online (Sandbox Code Playgroud)

c++ precision integral

0
推荐指数
1
解决办法
106
查看次数

标签 统计

c++ ×1

dask ×1

dataframe ×1

integral ×1

pandas ×1

precision ×1

python ×1