Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫的性能有着奇怪的差异,小熊猫的数据帧;大规模_Python_Pandas_Csv_Dataframe - Fatal编程技术网

Python 熊猫的性能有着奇怪的差异,小熊猫的数据帧;大规模

Python 熊猫的性能有着奇怪的差异,小熊猫的数据帧;大规模,python,pandas,csv,dataframe,Python,Pandas,Csv,Dataframe,我有一个从CSV文件读取的数据帧。我需要生成新数据并将它们添加到旧数据的末尾 但奇怪的是,当比较小规模和大规模时,它显示出完全不同的结果。我想这可能与查看、复制()和链接分配有关 我尝试了两个选项来使用pd.copy()来避免潜在的问题 第一种选择: d_jlist = pd.read_csv('127case.csv', sep=',') #got the data shape: (46355,48) from CSV file d_jlist2 = d_jlist.copy()

我有一个从CSV文件读取的数据帧。我需要生成新数据并将它们添加到旧数据的末尾

但奇怪的是,当比较小规模和大规模时,它显示出完全不同的结果。我想这可能与查看、复制()和链接分配有关

我尝试了两个选项来使用pd.copy()来避免潜在的问题

第一种选择:

d_jlist = pd.read_csv('127case.csv', sep=',')   #got the data  shape: (46355,48) from CSV file
d_jlist2 = d_jlist.copy()                       #Use deep copy, in case of change the raw data


d_jlist3 = pd.DataFrame()


a = np.random.choice(range(5,46350),size = 1000*365)  #Select from row 5 to row 46350


for i in a:
    d_jlist3 = d_jlist3.append(d_jlist.iloc[i].copy() +np.random.uniform(-1,1) )



d_jlist3 = d_jlist3.replace(0,0.001,regex=True)
d_jlist3 = d_jlist3.round(3)  

d_jlist = d_jlist.append(d_jlist3) 
a = consumption.columns.values     #Something to do with header
a = a[5:53]   
d_jlist.to_csv('1127case_1.csv',header = a,index=False)
第二种选择:

d_jlist = pd.read_csv('127case.csv', sep=',')
d_jlist2 = d_jlist.copy()

d_jlist3 = pd.DataFrame() 
a = np.random.choice(range(5,46350),size = 1000*365)


for i in a:
    d_jlist3 = d_jlist3.append(d_jlist2.iloc[i] +np.random.uniform(-1,1) )

d_jlist3 = d_jlist3.replace(0,0.001,regex=True)
d_jlist3 = d_jlist3.round(3)  

d_jlist = d_jlist.append(d_jlist3) 
a = consumption.columns.values     #Something to do with header
a = a[5:53]   
d_jlist.to_csv('1117case_2.csv',header = a,index=False)
问题是,如果我在小范围内使用这些代码,它会按预期工作。新行添加到旧行,旧数据中没有任何更改。 但是,如果我达到上面的比例(1000*365),旧的行将被更改

奇怪的是:每行只有前两列保持不变。每行的其余列都将被更改

结果是:

左边是旧的数据帧,它有(46356,48)形状。下面是生成的新数据

右边的一个是从选项1得到的结果(两个选项得到的结果相同)。从第三列开始,旧数据被更改

如果我以较小的比例(3行)尝试这两个选项中的任何一个,都可以。所有旧数据都将保留。

我怎么能理解呢?我花了很多时间试图找到解释,但失败了

大熊猫的某些规则在规模更大(达到365K)时是否发生了变化

d_jlist = pd.read_csv('127case.csv', sep=',')
d_jlist = d_jlist.iloc[:10]         #Only select 10 rows from old ones

d_jlist2 = d_jlist.copy()

d_jlist3 = pd.DataFrame() 
a = np.random.choice(range(5,6),size = 3)  #Only select 3 rows randomly from old data


for i in a:
    d_jlist3 = d_jlist3.append(d_jlist2.iloc[i] +np.random.uniform(-1,1) )

d_jlist3 = d_jlist3.replace(0,0.001,regex=True)
d_jlist3 = d_jlist3.round(3)  

d_jlist = d_jlist.append(d_jlist3)  
a = consumption.columns.values     #Something to do with header
a = a[5:53]  
d_jlist.to_csv('1117case_2.csv',header = a,index=False)