拆分csv文件中存在的图表

时间:2019-07-16 19:49:47

标签: python python-3.x

我有多个包含数学函数信息的csv文件,下面是前60行的示例:

# Time-averaged data for fix 1
# TimeStep Number-of-rows
# Row c_LIQUIDE_liquid[1] c_LIQUIDE_liquid[2] c_LIQUIDE_liquid[3]
20000 50
1 0.0605033 0 0
2 0.18151 0 0
3 0.302516 0 0
4 0.423523 0 0
5 0.54453 0 0
6 0.665536 0 0
7 0.786543 0 0
8 0.907549 0 0
9 1.02856 0 0
10 1.14956 0 0
11 1.27057 0 0
12 1.39158 0 0
13 1.51258 0 0
14 1.63359 0 0
15 1.7546 0 0
16 1.8756 0 0
17 1.99661 0 0
18 2.11762 0 0
19 2.23862 0.00512989 0.00109756
20 2.35963 0.20265 0.0492683
21 2.48064 1.27103 0.383171
22 2.60164 3.1282 1.28707
23 2.72265 4.74641 2.78909
24 2.84366 5.35566 4.63787
25 2.96466 4.44087 6.30409
26 3.08567 3.01615 7.53
27 3.20667 2.09008 8.44744
28 3.32768 1.58315 9.19579
29 3.44869 1.29398 9.85274
30 3.56969 1.12715 10.4659
31 3.6907 1.06085 11.0827
32 3.81171 1.04245 11.7292
33 3.93271 1.08043 12.4425
34 4.05372 1.21352 13.2937
35 4.17473 1.32394 14.2787
36 4.29573 1.28076 15.2875
37 4.41674 1.2989 16.3691
38 4.53775 1.41225 17.6104
39 4.65875 1.61542 19.107
40 4.77976 1.9324 20.9914
41 4.90077 2.29982 23.3491
42 5.02177 2.49038 26.0299
43 5.14278 2.38504 28.7224
44 5.26379 2.1145 31.2232
45 5.38479 1.92393 33.6045
46 5.5058 1.82569 35.9668
47 5.62681 1.80382 38.4045
48 5.74781 1.77157 40.9027
49 5.86882 1.7169 43.4269
50 5.98983 1.60658 45.8873
40000 50
1 0.0605033 0 0
2 0.18151 0 0
3 0.302516 0 0
4 0.423523 0 0
5 0.54453 0 0

基本上,它由3行的相对无用的标题组成,然后是多个“图表”。它们的第一行给出了完成的时间和给出的分数。因此,如果您看一下,对于第一个,它是在时间步20000上完成的,并打印了50个点。所有这50个点都是以下几行,其中第一列是该点的编号,第二列表示变量r,第三列表示称为g(r)的函数的结果,第四列表示该g(r)的整数功能。之后,直到文档结束,它以完全相同的方式显示了更多图表,除了信息行之外,没有其他任何分隔。

这些文件可以包含很多信息,例如具有100个图表的5000多个行。

我希望我的python脚本能够读取文件,注意“信息”行的位置,并仅提取这些信息行的某些值的图表。

例如,如果最后一个图表(信息行中时间步长最高)的值是1000,我希望它找到最接近最大值的10%的图表(因此在时间步长100附近),最接近最大值的50%(大约在时间步500处)。

我能想到的最好的办法是每行读取整个文件行,并将可用的时间步长及其对应的行写入数组,然后从这些行中再次读取文件并将信息保存在数组中其中每个元素是一个二维数组,包含图表。

如果它可以使它变得更清晰,例如达到第一张图表第二行的第二个值,我将其称为TotalCharts [0] [1] [1] = 0.18151

此方法的问题在于它非常慢,因此我尝试查看了熊猫,但是我没有找到如何在这样的用例中正确使用它,有用的标头会在整个文档中重复出现,以及在哪里没有可以使用的标题行。

对于解决该挑战的任何帮助或建议,将不胜感激!

非常感谢! :)

0 个答案:

没有答案