python处理海量数据_加速处理海量数据的Python文件

我有一个大数据集存储为一个17GB的csv文件(fileData),其中包含可变数量的记录(最多30个,000),我试图搜索特定客户(列在fileSelection-总共90000个客户中的1500个),并将每个客户的记录复制到一个单独的csv文件(fileOutput)。在

我对Python很陌生,但使用它是因为vba和matlab(我更熟悉)不能处理文件大小。(我使用aptanastudio编写代码,但是为了提高速度,直接从cmd行运行python。运行64位Windows 7。)

我编写的代码提取了一些客户,但有两个问题:

1) 它在大型数据集中找不到大多数客户。(我相信它们都在数据集中,但不能完全确定。)

2) 它很慢。如果能更好地利用核心代码,那就更好了

代码如下:`def main():

# Initialisation :

# - identify columns in slection file

#

fS = open (fileSelection,"r")

if fS.mode == "r":

header = fS.readline()

selheaderlist = header.split(",")

custkey = selheaderlist.index('CUSTOMER_KEY')

#

# Identify columns in dataset file

fileData = path2+file_data

fD = open (fileData,"r")

if fD.mode == "r":

header = fD.readline()

dataheaderlist = header.split(",")

custID = dataheaderlist.index('CUSTOMER_ID')

fD.close()

# For each customer in the selection file

customercount=1

for sr in fS:

# Find customer key and locate it in customer ID field in dataset

selrecord = sr.split(",")

requiredcustomer = selrecord[custkey]

#Look for required customer in dataset

found = 0

fD = open (fileData,"r")

if fD.mode == "r":

while found == 0:

dr = fD.readline()

if not dr: break

datrecord = dr.split(",")

if datrecord[custID] == requiredcustomer:

found = 1

# Open outputfile

fileOutput= path3+file_out_root + str(requiredcustomer)+ ".csv"

fO=open(fileOutput,"w+")

fO.write(str(header))

#copy all records for required customer number

while datrecord[custID] == requiredcustomer:

fO.write(str(dr))

dr = fD.readline()

datrecord = dr.split(",")

#Close Output file

fO.close()

if found == 1:

print ("Customer Count "+str(customercount)+ " Customer ID"+str(requiredcustomer)+" copied. ")

customercount = customercount+1

else:

print("Customer ID"+str(requiredcustomer)+" not found in dataset")

fL.write (str(requiredcustomer)+","+"NOT FOUND")

fD.close()

fS.close()

`

花了几天时间才找到几百个客户,但没有找到更多的客户。在

谢谢@Paul Cornelius。这样效率更高。我采用了您的方法,也使用了@Bernardo建议的csv处理:

^{pr2}$

Python是一种强大的编程语言,拥有丰富的数据处理库和工具,可用于处理海量数据。下面以一个简单的案例来说明Python如何处理海量数据。 假设我们有一个包含千万条学生信息的数据文件,其中包含每个学生的姓名、年龄、性别、成绩等信息。我们需要对这些数据进行一些操作和计算。 首先,我们可以使用Python的pandas库来读取和处理数据文件。通过调用pandas的read_csv函数,我们可以快速将数据文件加载到内存中,并将其转换为一个数据结构,比如DataFrame,方便我们进行后续操作。 接下来,我们可以使用pandas的各种功能来对数据进行预处理和清洗。比如,我们可以使用DataFrame的filter、sort、groupby等函数来筛选、排序和分组数据,以满足我们的需求。例如,我们可以按照成绩对学生进行排名,筛选出前10%的学生,或者按照性别分组计算平均成绩。 除了pandas,Python还提供了其他强大的数据处理库,比如NumPy和SciPy,可以进行高性能的数值计算和科学计算。我们可以利用这些工具来进行数据分析、统计建模、机器学习等复杂的操作。例如,我们可以使用NumPy的数组和矩阵操作来进行矩阵计算,或者使用SciPy的统计函数来进行概率分布拟合和假设检验。 最后,Python还支持并行计算和分布式计算,可以利用多核处理器和集群来加速海量数据处理。通过使用Python的并行计算库,比如multiprocessing和concurrent.futures,我们可以将数据分成多个部分并行处理,提高计算效率。另外,Python还可以与一些分布式计算框架,比如Spark和Dask等,进行集成,以便处理更大规模的数据。 综上所述,Python处理海量数据提供了丰富的工具和库,无论是进行简单的数据清洗和处理,还是进行复杂的数据分析和计算,Python都可以帮助我们高效地完成任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值