Функции не выводят данные после вызова - PullRequest
0 голосов
/ 27 октября 2018

Обновление: проблема решена

Похоже, что-то не так с spyder, так как я продолжаю переупорядочивать строки программы снова и снова, и когда я запускаю программу, она работает. Когда я снова запускаю программу, она выдает мне кучу ошибок, а иногда ошибки нелогичны, например, неопределенные переменные. Это побудило меня продолжать перезапускать ядро, выходить из консоли IPython и переупорядочивать строки слишком много раз, пока исходный код не стал грязным и полным ошибок.

Проще говоря, я решил проблему, сначала открыв файл data / csv, а затем добавив переменные. После этого я определил функцию и вызвал ее в конце. Теперь я получаю желаемый результат.

Вот окончательный исходный код

import pandas as pd
from pandas import DataFrame
import csv
import random
import numpy as np
import random



#  Accessing our own data
# use this if you have data in your computer==>fin = pd.read_csv('/home/aziz/Desktop/b6h.csv')
# or just use the list below
fin = [1, -3, -2, 8, 4, -5, 6, -7] 

#  Obtaining our own data as floats in lines
#  DataIncomplete = (float(line) for line in fin['mv'])
DataIncomplete = (float(line) for line in fin)


#  This is to structure our data properly
positive = [n for n in DataIncomplete if n >= 0.0001]
data = pd.DataFrame(np.array(positive))

# Measures the length of the data after excluding the negative numbers
Total_Range_of_Data = len(data)

# Measures the number of samples needed for our filtered data
Total_Number_of_Needed_Samples = Total_Range_of_Data/200

# Convert floats to integers
FixedNumber = int(Total_Range_of_Data)

# Speciies the required range based on the FixedNumber
for x in range(1, FixedNumber):
    A_Random_Number = random.randint(1, int(Total_Number_of_Needed_Samples))
    A_Slice = A_Random_Number * 1
    StaEndSli = data[A_Slice:A_Slice + 200]
    FixedRange = int(Total_Number_of_Needed_Samples)

'''
Defining the function, looping the program based 
on the length of the data / 200 or any number of sample required
'''
def Grab(repeat):
        for repeat in range(FixedRange):
            print(StaEndSli)
Grab(FixedRange)

Есть ошибки, и код ниже не работает

Запись была обновлена ​​еще раз. Код теперь работает и выводит случайный фрагмент данных. Тем не менее, функция цикла все еще не работает. Когда я набираю print(StaEndSli), вывод не отличается, как положено. В предыдущем исходном коде было много строк в неправильном порядке, поэтому я удалил его из поста, так как это совсем не выгодно

Я написал исходный код для случайного получения фрагментов из файла CSV. Программа использует функцию цикла для повторения процесса снова и снова в зависимости от длины переменной Total_number_of_needed_samples. Проблема в том, что код работает без ошибок, но ничего не выводит. Я считаю, что с порядком строк что-то не так.

вот исходный код:

import pandas as pd
from pandas import DataFrame
import csv
import random
import numpy as np
import random


def Repeating(GrabingRandomSamples, Total_Number_of_Needed_Samples):
    for repeat in range(Total_Number_of_Needed_Samples):
        print(StaEndSli = data[A_Slice:A_Slice + 200])


    Repeating(GrabingRandomSamples)


    #  Accessing our own data
    #fin = pd.read_csv('/home/aziz/Desktop/b6h.csv')
    fin = [1, -3, -2, 8, 4, -5, 6, -7]


    #  Obtaining our own data as floats in lines
    DataIncomplete = (float(line) for line in fin)


    #  This is to structure our data properly
    positive = [n for n in DataIncomplete if n >= 0.0001]
    data = pd.DataFrame(np.array(positive))





    # Measures the length of the data after excluding the negative numbers
    Total_Range_of_Data = len(data)

    # Measures the number of samples needed for our filtered data
    Total_Number_of_Needed_Samples = Total_Range_of_Data/200
    FixedNumber = int(Total_Range_of_Data)

    for x in range(1, FixedNumber):
        A_Random_Number = random.randint(1, int(Total_Number_of_Needed_Samples))
        A_Slice = A_Random_Number * 1
        StaEndSli = data[A_Slice:A_Slice + 200]
        print(StaEndSli)

        Repeating( int(Total_Number_of_Needed_Samples))
print(StaEndSli)

Я думаю, что проблема в этой конкретной части кода, так как большая ее часть - просто куча рабочих переменных.

for x in range(1, FixedNumber):
    A_Random_Number = random.randint(1, int(Total_Number_of_Needed_Samples))
    A_Slice = A_Random_Number * 1
    StaEndSli = data[A_Slice:A_Slice + 200]
    print(StaEndSli)

    Repeating( int(Total_Number_of_Needed_Samples))

Идея программы заключается в том, что я хочу получить доступ к CSV-файлу со многими экземплярами. Программа должна делать 3 вещи. 1- получает только положительные числа. 2 - случайные фрагменты подряд. 3 - это зацикливает случайную часть нарезки, скажем, 30 раз. Или согласно длине variable Total_number_of_needed_samples.

Давайте предположим, что у нас есть 10000 экземпляров. Программа будет вырезать случайную выборку с последовательными экземплярами после исключения отрицательных чисел следующим образом.

Данные

 :
 :
 :
123
-123
658
98
-25
-654
-456
-354
  :
  :

желаемый результат после исключения отрицательных чисел

123
658
98

Затем программа будет циклически повторять функцию с другими случайными выборками.

1 Ответ

0 голосов
/ 27 октября 2018

Очевидно, что с spyder что-то не так, так как я продолжаю переупорядочивать строки программы снова и снова, и когда я запускаю программу, она работает.Когда я снова запускаю программу, она выдает мне кучу ошибок, а иногда ошибки нелогичны, например, неопределенные переменные.Это заставило меня продолжать перезапускать ядро, выходить из консоли IPython и переупорядочивать строки слишком много раз, пока исходный код не стал грязным и полным ошибок.

Просто я решил проблему, открыв свой файл data / csvво-первых, и добавление переменных во-вторых.После этого я определил функцию и вызвал ее в конце.Теперь я получаю желаемый вывод.

Вот окончательный исходный код

import pandas as pd
from pandas import DataFrame
import csv
import random
import numpy as np
import random



#  Accessing our own data
# use this if you have data in your computer==>fin = pd.read_csv('/home/aziz/Desktop/b6h.csv')
# or just use the list below
fin = [1, -3, -2, 8, 4, -5, 6, -7] 

#  Obtaining our own data as floats in lines
#  DataIncomplete = (float(line) for line in fin['mv'])
DataIncomplete = (float(line) for line in fin)


#  This is to structure our data properly
positive = [n for n in DataIncomplete if n >= 0.0001]
data = pd.DataFrame(np.array(positive))

# Measures the length of the data after excluding the negative numbers
Total_Range_of_Data = len(data)

# Measures the number of samples needed for our filtered data
Total_Number_of_Needed_Samples = Total_Range_of_Data/200

# Convert floats to integers
FixedNumber = int(Total_Range_of_Data)

# Speciies the required range based on the FixedNumber
for x in range(1, FixedNumber):
    A_Random_Number = random.randint(1, int(Total_Number_of_Needed_Samples))
    A_Slice = A_Random_Number * 1
    StaEndSli = data[A_Slice:A_Slice + 200]
    FixedRange = int(Total_Number_of_Needed_Samples)

'''
Defining the function, looping the program based 
on the length of the data / 200 or any number of sample required
'''
def Grab(repeat):
        for repeat in range(FixedRange):
            print(StaEndSli)
Grab(FixedRange)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...