Я пытаюсь запустить скрипт для каждого отдельного столбца файла csv. Я выяснил, как сообщить python, в каком столбце я хотел бы запустить скрипт, но я хочу, чтобы он анализировал столбец один, выводил результаты, переходим к столбцу два и продолжаем и продолжаем через файл. То, что я хочу, это команда «if etc goto и т. Д.». Я нашел, как это сделать с помощью простых oneliners, но у меня есть большой скрипт. Любая помощь была бы замечательной, поскольку я уверен, что я просто что-то пропустил. Как если бы я мог вернуться к тому, где я определяю свои данные (h = data), но скажу, чтобы выбрать следующий столбец. Вот мой сценарий.Возврат к следующему столбцу в csv
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
import pylab
from scipy import linalg
import sys
import scipy.interpolate as interpolate
import scipy.optimize as optimize
a=raw_input("Data file name? ") #Name of the data file including the directory, must be .csv
datafile = open(a, 'r')
data = []
for row in datafile:
data.append(row.strip().split(',')) #opening and organizing the csv file
print('Data points= ', len(data))
print data
c=raw_input("Is there a header row? y/n?") #Remove header line if present
if c is ('y'):
del data[0]
data2=data
print('Raw data= ', data2)
else:
print('Raw data= ', data)
'''
#if I wanted to select a column
b=input("What column to analyze?") #Asks what column depth data is in
if b is 1:
h=[[rowa[i] for rowa in data] for i in range(1)] #first row
'''
h=data # all columns
g=reduce(lambda x,y: x+y,h) #prepares data for calculations
a=map(float, g)
a.sort()
print ('Organized data= ',a)
def GRLC(values):
'''
Calculate Gini index, Gini coefficient, Robin Hood index, and points of
Lorenz curve based on the instructions given in
www.peterrosenmai.com/lorenz-curve-graphing-tool-and-gini-coefficient-calculator
Lorenz curve values as given as lists of x & y points [[x1, x2], [y1, y2]]
@param values: List of values
@return: [Gini index, Gini coefficient, Robin Hood index, [Lorenz curve]]
'''
n = len(values)
assert(n > 0), 'Empty list of values'
sortedValues = sorted(values) #Sort smallest to largest
#Find cumulative totals
cumm = [0]
for i in range(n):
cumm.append(sum(sortedValues[0:(i + 1)]))
#Calculate Lorenz points
LorenzPoints = [[], []]
sumYs = 0 #Some of all y values
robinHoodIdx = -1 #Robin Hood index max(x_i, y_i)
for i in range(1, n + 2):
x = 100.0 * (i - 1)/n
y = 100.0 * (cumm[i - 1]/float(cumm[n]))
LorenzPoints[0].append(x)
LorenzPoints[1].append(y)
sumYs += y
maxX_Y = x - y
if maxX_Y > robinHoodIdx: robinHoodIdx = maxX_Y
giniIdx = 100 + (100 - 2 * sumYs)/n #Gini index
return [giniIdx, giniIdx/100, robinHoodIdx, LorenzPoints]
result = GRLC(a)
print 'Gini Index', result[0]
print 'Gini Coefficient', result[1]
print 'Robin Hood Index', result[2]
Если вы публикуете 4-5 строк данных образца, было бы легче протестировать решение. –
Извините, это всего лишь калькулятор Gini, например, скажем, недельные зарплаты1 = 1234,2342,2234,2121,5677,4553, зарплаты2 = 2342,23455,234,7564,43223,12213. С каждой зарплатой в столбце в файле csv. – user2843767