Найти - Пользователи
Полная версия: Вывод результата по столбцам
Начало » Центр помощи » Вывод результата по столбцам
1
Irv1n
Подскажите, есть данный код. Устанавливается значение (ver_val) и затем это значение 10 раз измеряется и добавляется в датафрейм. И так по кругу пока не закончатся значения в (ver_val). В результате данные измерения записываются в csv файл в одну колонку. Собственно вопрос: как сделать вывод первых 10 измерений в столбец, далее следующие 10 в следующий столбцец и так далее.
Спасибо.

 for value in ver_val[rang]:
        set_value = float(value)
        cal.out_set(set_value)  # enable output
        cal.out_enable()
        # Wait for output to settle and read output
        cal.inst.write("*WAI; OUT?")
        time.sleep(3)  # take a nap few seconds
        cal.out_read()
        val = []
        for samples in range(10):  # количество измерений
            meas['Measurements'] = dmm.get_data()
            print("Измерение %d: %.9f В" % (samples + 1, dmm_val))
            val.append(dmm_val)  # Создает список из количества измерений
            measurements = measurements.append(meas, ignore_index=True)
py.user.next
Irv1n
как сделать вывод первых 10 измерений в столбец, далее следующие 10 в следующий столбцец и так далее.
  
>>> def split_list(lst, n):
...     out = []
...     tmp = []
...     for i in lst:
...         tmp.append(i)
...         if len(tmp) == n:
...             out.append(tmp)
...             tmp = []
...     if tmp:
...         out.append(tmp)
...     return out
... 
>>> def transpose(mtx):
...     out = []
...     columns = tuple(map(iter, mtx))
...     while True:
...         outrow = [next(i, None) for i in columns]
...         if outrow == [None] * len(outrow):
...             break
...         out.append(outrow)
...     return out
... 
>>> lst = list(range(50))
>>> lst
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
>>> 
>>> split = split_list(lst, 10)
>>> split
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [20, 21, 22, 23, 24, 25, 26, 27, 28, 29], [30, 31, 32, 33, 34, 35, 36, 37, 38, 39], [40, 41, 42, 43, 44, 45, 46, 47, 48, 49]]
>>> 
>>> transposed = transpose(split)
>>> transposed
[[0, 10, 20, 30, 40], [1, 11, 21, 31, 41], [2, 12, 22, 32, 42], [3, 13, 23, 33, 43], [4, 14, 24, 34, 44], [5, 15, 25, 35, 45], [6, 16, 26, 36, 46], [7, 17, 27, 37, 47], [8, 18, 28, 38, 48], [9, 19, 29, 39, 49]]
>>> 
>>> for i in transposed:
...     print(('{:5d}' * len(transposed[0])).format(*i))
... 
    0   10   20   30   40
    1   11   21   31   41
    2   12   22   32   42
    3   13   23   33   43
    4   14   24   34   44
    5   15   25   35   45
    6   16   26   36   46
    7   17   27   37   47
    8   18   28   38   48
    9   19   29   39   49
>>>


tags: transpose
Irv1n
Спасибо, все работает! Может еще кто поможет с такой задачей:
 ver_val = OrderedDict()
ver_val[0.1] = [0.1, -0.1]
ver_val[1] = [1, -1]
ver_val[10] = [1, 5, 10, -1, -5, -10]
ver_val[100] = [100, -100]
ver_val[1000] = [1000, -1000]
results = pd.DataFrame()
measurements = pd.DataFrame()
calc = {}
meas = {}
calc_pool = []
# val2 = []
# Цикл на установку диапазона и обнуление мультиметра
for rang in ver_val:
    cal.out_set("0 mV")
    cal.out_enable()
    # Wait for output to settle and read output
    cal.inst.write("*WAI; OUT?")
    time.sleep(3)  # take a nap few seconds
    dmm.set_range(rng=str(rang))
    # dmm.set_null()
    time.sleep(3)
    # Цикл на установку точек калибровки
    for value in ver_val[rang]:
        set_value = float(value)
        cal.out_set(set_value)  # enable output
        cal.out_enable()
        # Wait for output to settle and read output
        cal.inst.write("*WAI; OUT?")
        time.sleep(3)  # take a nap few seconds
        cal.out_read()
        # Цикл на количество измерений в одной точке
        val = []
        for samples in range(2):  # количество измерений
            meas['Measurements'] = dmm.get_data()
            dmm.get_data()
            print("Измерение %d: %.9f В" % (samples + 1, dmm_val))
            val.append(dmm_val)  # Создает список из количества измерений
            measurements = measurements.append(meas, ignore_index=True)
Программа работает так: Есть два измерительных прибора - Калибратор и Мультиметр. На мультиметре устанавливается диапазон (ключ из словаря), и калибратор подаетзаданные точки на мультиметр (значения из словаря), далее мультиметр измеряет эти точки(здесь их две) и далее измерения добавляются вдатафрейм. Хотелось бы увидеть датафрейм в таком виде (исходя из значений из словаря, они там могут меняться):
Устан. знач. 0.1 -0.1 1 -1
0 0.099999 -0.099998 1.0000000 -1.0000032
1 0.099998 -0.0999997 1.0000076 -1.0000031
2 0.099999 -0.099998 1.0000032 -1.0000031

здесь -0.1, -0.1, 1, -1 - это значения из словаря(set_value = float(value)) уст. на калиб., под ними значения измеренные на мультиметре (meas = dmm.get_data()).
и продолжить датафрейм далее согласно словарю.
Прошу прощения за данные вопросы, только начал изучать python на примерах
Заранее спасибо.
py.user.next
Irv1n
только начал изучать python на примерах
Ты не знаешь, что pandas - это не питон, а сторонний модуль, который вообще нужно изучать отдельно от питона. Сначала надо изучать питон, потом только надо изучать pandas. И то не факт, что в этом будет необходимость, потому что есть много сторонних модулей, которые конкурируют друг с другом. К тому же питон всё это может делать вообще без модулей.
Поэтому уйди с pandas, останься на питоне. Все эти массивы можно на питоне делать. И потом, когда тебе pandas понадобится и ты его будешь знать вдобавок к этому, тогда ты и будешь на нём писать.
Irv1n
py.user.next спасибо Вам за информацию. Не ищем легких путей . Свою задачу решил, остался вопрос:
как сделать название столбца(колонки) из двух значений, к примеру

Диапазон: 0.1
Точка 0.1

0.0999999
0.0999996
0.0999997
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB