如何循环读取巨型CSV文件

时间:2019-02-21 05:49:45

标签: python pandas csv

我有一个基础CSV。它在来源中:311-Service 该库大约有11 GB。它是1900万行和41列。

我只想获取有关城市的信息:NEW JERSEY表格列City。 我只能将此查询用于500,000行。可行!

NYPD = pd.read_csv('c:/1/311_Service_Requests_from_2010_to_Present.csv', nrows=500000, low_memory=False)
M = NYPD.loc[NYPD.City=='NEW JERSEY', :]
M.to_csv('c:/1/NJ_NYPD.csv')

我需要CSV文件所有行中的信息,而不仅仅是50万行。 我想我需要使用一个循环,chunksize = 500,000,但我不知道如何。

hunksize =500000  
    i = 0
    j = 1
    for df in pd.read_csv('c:/1/311_Service_Requests_from_2010_to_Present.csv', chunksize=chunksize, iterator=True, low_memory=False):
          df.loc[df.City=='NEW JERSEY', :]
          df.index += j
          i+=1
          df.to_csv('c:/1/NJ_NYPD.csv')

我不想将CSV转换为dbase方法。

2 个答案:

答案 0 :(得分:1)

为什么不只在解析时使用所需的列:

my_filtered_csv = pd.read_csv(filename, usecols=['City'])

答案 1 :(得分:1)

如何尝试API调用:-

data.cityofnewyork.us/resource/fhrw-4uyv.json?city=NEW%20JERSEY 

这只会为指定城市加载json,然后将此json转换为您的dataFrame

import requests
import json
from pandas.io.json import json_normalize

data = requests.get('https://data.cityofnewyork.us/resource/fhrw-4uyv.json?city=NEW%20JERSEY')

json_normalize(json.loads(data.text))

enter image description here

P.S。:-他们也有一些有关python pandas的文档:-

https://dev.socrata.com/foundry/data.cityofnewyork.us/fhrw-4uyv

P.P.S。:-我没有注册该服务,因此据我所知,它仅显示50条记录。