Это был довольно интересный вопрос. Я протестировал несколько фреймов данных, начиная с 1 млн. Записей до 55 млн., Того же размера, что и ваш, сохраняя значения min
, max
аналогичными вашим.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
x, y = [], []
for idx, num in enumerate(range(1, 57, 2)):
print(f"{idx+1}) Testing with {num} million records...")
rows = num*(10**6)
cols = ['col']
df = pd.DataFrame(np.random.uniform(0, 9.761140e+02, size=(rows, len(cols))), columns=cols)
df['col1'] = pd.to_numeric(df['col'], downcast='float')
df['diff'] = df['col'] - df['col1']
diff = df['col'].mean() - df['col1'].mean()
x.append(num)
y.append(diff)
plt.plot(x, y, 'ro')
plt.xlabel('number of rows (millions)')
plt.ylabel('precision value lost')
plt.show()
Вот график.
Судя по графику, кажется, что после 35 миллионов записей наблюдается внезапное увеличение потери точности и, по-видимому, логарифмический характер c. Я еще не понял, почему это так.