Как вывести карту моих наборов данных? - PullRequest
0 голосов
/ 24 апреля 2018

Я хочу написать программу на Python, которую я могу напечатать в наборе данных #, и она получит указанный номер таблицы.У меня есть рабочее решение для раздела данных, но мой окончательный CSV-файл - 3 ГБ, и его использование приводит к ошибкам памяти.так что я пытался создать дополнительный CSV-файл, который содержит расположение начала и конца каждой таблицы.

    import pandas as pd

    bl = pd.read_csv(r"C:\Users\K\csvsectionofdata.csv", names=                        
    ["A","B","C","D"])

    bl.loc[0:3, 'D'] = [1,1,1,1]
    bl.loc[0:3, 'C'] = [0,1,2,3]

    for i in range(1, len(bl)):
        if bl.loc[i, "B"] == str("intensity"):
            bl.loc[i, 'C'] = 0
            bl.loc[i, 'D'] = bl.loc[i-1, 'D'] + 1
        else:
            bl.loc[i, 'C'] = bl.loc[i-1, 'C'] + 1
            bl.loc[i, 'D'] = bl.loc[i-1, 'D'] 

    sl = []

    s = int(input()) - 1
    print ("--------")

    top = (int(bl.D.searchsorted(s, side='right')))
    btm = (int(bl.D.searchsorted(s + 1, side='right')))

    sl = (bl.iloc[(top + 1):(btm - 1),:])
    print (sl)

Вот как выглядит «bl»:

    m/z,intensity
    1,5
    2,250
    ,
    m/z,intensity
    12,10
    13,27
    14,51
    15,222
    16,250
    17,4
    ,
    m/z,intensity
    12,2
    13,7
    14,19
    15,189
    16,250
    17,3
    ,
    m/z,intensity
    12,7

И тогда результирующий CSV будет выглядеть следующим образом:

    Start,End
    0,2
    4,10
    12,18
    20.......

Должен быть какой-то способ сделать это более питоническим, чем загрузка всего набора данных в память, верно?

1 Ответ

0 голосов
/ 25 апреля 2018

Я на самом деле понял это сам! вот мое решение:

import pandas as pd
import numpy as np

bl = pd.read_csv(r"C:\Users\list.csv", names=["A","B","C","D"], sep=";")

x = int(input())

numbr = pd.DataFrame({'A':bl.query('B == "intensity"').index})
start = numbr.iat[x,0]
end = numbr.iat[(x + 1),0]
print('---------')
print(start)
print(end)
print('----')
print(bl.iloc[start:end,0:2])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...