从 Python 中的大文件中绘制数据
Plotting data from large file in Python
我有一个大文件 (2 GB)。我想在 scatterplot
中绘制其中的数据。数据在文件中具有以下格式。
day block1 block2 block3 .....
1 34.89 88.90 67.89 .....
2 77.890 33.56 76.98 .....
3 67.12 67.89 55.89 .....
... ..... ..... ..... .....
pltData 将是
列的平均值列表
pltData = [avg_block1, avg_block2, avg_block3, .....]
pltX 和 pltY 是有限列表。为了从名为 pltData 的列表中绘制数据,我使用以下代码:
from matplotlib.colors import ListedColormap, LinearSegmentedColormap
import matplotlib.pyplot as plt
import matplotlib.cm as cm
FIGURE = plt.Figure()
SUBPLOT1 = FIGURE.add_subplot(121)
SUBPLOT1.set_xlabel('x distance')
SUBPLOT1.set_ylabel('y distance')
data1 = {'x-distance' : pltX , 'y_distance' : pltY}
df3 = DataFrame(data1, columns=['x-distance','y_distance'])
plot1= SUBPLOT1.scatter(df3['x-distance'],df3['y_distance'], marker='o', s=15, linewidths=0.1, c=pltData, cmap='rainbow', vmin=min(pltData), vmax=max(pltData))
FIGURE.colorbar(plot1, ax=SUBPLOT1)
但是,对于2GB这样大的文件,创建列表pltData是不可能的,因为行数和列数都很大。有人可以指导我如何绘制数据吗?
您可以使用 pandas 包来加载您的数据,然后从那里获取列的平均值。像这样,
import pandas as pd
pltData = pd.read_csv('my2gbdata.csv')
pltData = pltData.mean()
这将为您提供每列的平均值,您可以从那里根据需要使用它。
我有一个大文件 (2 GB)。我想在 scatterplot
中绘制其中的数据。数据在文件中具有以下格式。
day block1 block2 block3 .....
1 34.89 88.90 67.89 .....
2 77.890 33.56 76.98 .....
3 67.12 67.89 55.89 .....
... ..... ..... ..... .....
pltData 将是
列的平均值列表pltData = [avg_block1, avg_block2, avg_block3, .....]
pltX 和 pltY 是有限列表。为了从名为 pltData 的列表中绘制数据,我使用以下代码:
from matplotlib.colors import ListedColormap, LinearSegmentedColormap
import matplotlib.pyplot as plt
import matplotlib.cm as cm
FIGURE = plt.Figure()
SUBPLOT1 = FIGURE.add_subplot(121)
SUBPLOT1.set_xlabel('x distance')
SUBPLOT1.set_ylabel('y distance')
data1 = {'x-distance' : pltX , 'y_distance' : pltY}
df3 = DataFrame(data1, columns=['x-distance','y_distance'])
plot1= SUBPLOT1.scatter(df3['x-distance'],df3['y_distance'], marker='o', s=15, linewidths=0.1, c=pltData, cmap='rainbow', vmin=min(pltData), vmax=max(pltData))
FIGURE.colorbar(plot1, ax=SUBPLOT1)
但是,对于2GB这样大的文件,创建列表pltData是不可能的,因为行数和列数都很大。有人可以指导我如何绘制数据吗?
您可以使用 pandas 包来加载您的数据,然后从那里获取列的平均值。像这样,
import pandas as pd
pltData = pd.read_csv('my2gbdata.csv')
pltData = pltData.mean()
这将为您提供每列的平均值,您可以从那里根据需要使用它。