我是python / pandas的新手,遇到了一个我无法理解的问题。我在csv文件中有Twitter数据,每个文件包含1000条推文。当我将文件读入数据帧时,一切正常(只需花费大量时间来阅读文件):
import glob
import pandas as pd
from pandas import DataFrame, Series
#folders/files with csv data
folders = glob.glob("/media/Data/TwitterFeed/*")
files = []
for i in folders:
files.extend(glob.glob("{0}/*".format(i)))
dflist = []
for j in range(len(files)):
print("Working on file {0} of {1}".format(str(j + 1), str(len(files))))
try:
dftemp1 = pd.read_csv(files[j], usecols=["source", "text", "timestamp_ms"])
dflist.append(dftemp1)
except Exception as e:
print("ERROR! {0}!".format(e))
pass
df = pd.concat(dflist, ignore_index=True)
这个包含大约600万条推文的数据帧可以以合理的速度进行操作。但是,如果已保存
df.to_csv("data.csv") #file size is 1.1 GB
并阅读新的python会话
df = pd.read_csv("data.csv", index_col = 0)
即使是最简单的操作,例如在推文中找到一个字符串(在初始数据帧中完全正常工作!),速度非常慢(每行1-2个)。当我遍历所有行时,问题似乎特别明显。这有什么理由吗?它会帮助将所有数据转储到数据库并从那里读取吗?
这是初始文件的df.info()(在50个文件后停止):
<class 'pandas.core.frame.DataFrame'>
Int64Index: 50084 entries, 0 to 50083
Data columns (total 3 columns):
source 49987 non-null object
text 49988 non-null object
timestamp_ms 49984 non-null float64
dtypes: float64(1), object(2)
重新加载的文件:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 5738558 entries, 0 to 5738557
Data columns (total 3 columns):
source object
text object
timestamp_ms object
dtypes: object(3)