我试图通过玩开放的NY Taxi数据来提高我的熊猫技能。
我想直接从网站上获取数据,并仅过滤2017年3月发生的行。当我出于某种我不理解的原因尝试这样做时,仅下载了1.000行。 pd.read_csv()
似乎没有下载整个文件。似乎只处理了文件的前1.000行。
如何处理整个文件?
我已经阅读了有关如何使用pd.read_csv()
批量下载数据,然后对其进行迭代的内容。我玩过chunksize,但无济于事。我仍然只能得到1.000行。
chunk_list = []
for chunk in pd.read_csv("https://data.cityofnewyork.us/resource/biws-g3hs.csv", chunksize=100000):
chunk["tpep_pickup_datetime"] =pd.to_datetime(chunk["tpep_pickup_datetime"], format='%Y-%m-%d')
chunk["tpep_dropoff_datetime"]=pd.to_datetime(chunk["tpep_dropoff_datetime"], format='%Y-%m-%d')
chunk_filter=chunk[(chunk["tpep_pickup_datetime"]>="2017-03-01")&(chunk["tpep_pickup_datetime"]<"2017-04-01")]
# Once the data filtering is done, append the chunk to list
chunk_list.append(chunk_filter)
df_concat = pd.concat(chunk_list,ignore_index=True)
df_concat.info()
我希望使用它100m +行来访问整个csv文件。当我在结果上使用
df_concat.info()
时,我只会得到1.000行:<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 17 columns):
dolocationid 1000 non-null int64
extra 1000 non-null float64
fare_amount 1000 non-null float64
improvement_surcharge 1000 non-null float64
mta_tax 1000 non-null float64
passenger_count 1000 non-null int64
payment_type 1000 non-null int64
pulocationid 1000 non-null int64
ratecodeid 1000 non-null int64
store_and_fwd_flag 1000 non-null object
tip_amount 1000 non-null float64
tolls_amount 1000 non-null float64
total_amount 1000 non-null float64
tpep_dropoff_datetime 1000 non-null datetime64[ns]
tpep_pickup_datetime 1000 non-null datetime64[ns]
trip_distance 1000 non-null float64
vendorid 1000 non-null int64
dtypes: datetime64[ns](2), float64(8), int64(6), object(1)
memory usage: 132.9+ KB
我必须在哪里调整代码以处理所有行?
谢谢!
最佳答案
问题不在于阅读。但是关于来源。
您可以手动下载和读取文件本身(“ https://data.cityofnewyork.us/resource/biws-g3hs.csv”),它只有1000行
您应该改用以下链接:
pd.read_csv("https://data.cityofnewyork.us/api/views/biws-g3hs/rows.csv?accessType=DOWNLOAD", chunksize=100000)
或者更好地下载它以本地解析