python-3.x - 迭代多个 CSV 检查每个文件中的整数值

标签 python-3.x pandas numpy genfromtxt

我是 python 新手,可以使用我能得到的任何帮助。我在 win7 机器上,使用 python 3.5 (anaconda)

我正在尝试迭代文件夹中的多个 CSV 文件(10k +),检查该文件中是否有超过预定义阈值的值。

我想使用文件名的子字符串作为名称字段的唯一标识符来构建字典或列表/元组(基本上是最类似于 SQL 表的任何内容),并使用另一列包含文件总数具有超过给定阈值的值。

我不希望你们中的任何人为我做这件事,因为这是很好的实践,但我会感谢任何可能使这变得更容易的模块建议。

我已经能够检查文件中的值,但这只需要大约 10 分钟即可完成此任务,我不确定如何迭代多个文件并构建表格等。谢谢!

import numpy as np
path = 'C:\\path' 
file = 'file.csv'
with open(path+file) as f:
    my_data = np.genfromtxt(path+file, delimiter = ",")
    for data in my_data:
        if -1 in my_data:
            print("it sure is")   

最佳答案

这是可行的 Pandas 解决方案:

import glob
import os
import pandas as pd

all_files = glob.glob(r'd:/temp/csv/*.csv')

threshold = 100

data = []

for f in all_files:
    data.append([os.path.basename(f),
                (pd.read_csv(f, header=None) > threshold).sum().sum()])

df = pd.DataFrame(data, columns=['file','count'])

print(df)

# optionally save DataFrame to SQL table (`conn` - is a SQLAlchemy connection)
#df.to_sql('table_name', conn)

输出:

    file  count
0  1.csv      2
1  2.csv      3

测试数据:

1.csv:

1,2,3,400
10,111,45,67

2.csv:

1,200,300,4
10,222,45,67

更新:

您可以这样解析文件名中的第一个数字:

In [87]: import re

In [88]: f
Out[88]: '/path/to/touchscreen_data_123456_1456789456_178.16.66.3'

In [89]: re.sub(r'.*_\D+_(\d+)_\d+.*', r'\1', f)
Out[89]: '123456'

关于python-3.x - 迭代多个 CSV 检查每个文件中的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40432688/

相关文章:

python-3.x - Colab 中的 Python 脚本不断抛出错误消息 : IndentationError: unindent does not match any outer indentation level

python - 在 pandas 数据帧上执行 fillna 时出现 InvalidIndexError

python - pcolormesh 为每个数据点/图 block 勾选中心

python - 使用 numpy reshape 多维数组

python - 尝试在 Windows 上安装 pyodbc 时出现 "Microsoft Visual C++ … is required"错误

linux - Scrapy:ModuleNotFoundError:没有名为 'scrapoxy' 的模块

python - 将 `column` 添加到 geoDataFrame.plot 会出现 TypeError

python - 如何删除 pandas.read_csv 中的索引(自动生成)

python - 将 Numpy 数组从 (3, 2, 3) reshape 为 (3, 3, 2)

python - 如何从源代码重建 python youtube-dl