El 13 de mayo de 2014, 20:05, AGTUGO <[email protected]> escribió: > > Muchas gracias, no es para clase. Es un programa para calcular la vida > minima de un componente mecánico, entonces debo buscar la vida minima > buscando todas las posibles combinaciones y despues hacer calculos. Esta > rutina la hago varias veces con algunas variaciones, y con el dataframe es > mas facil visualizar. > > Cuando paso a un array pierdo un poco de informacion de los headers, y la > tengo que extraer y volver a meter. En mi opinion estar cambiando de tipos > de datos aumenta la probabilidad de errores y la lectura posterior. Es más > o menos el ya discutido problema de evitar el tipo matrix en numpy y > solamente usar arrays aunque sea no tan transparente las operaciones > matriciales. > > > Pues si te ha funcionado, perfecto, y si no es lo que buscabas seguimos iterando.
Saludos. > 2014-05-13 12:16 GMT-05:00 Kiko <[email protected]>: > > >> >> >> El 13 de mayo de 2014, 18:31, AGTUGO <[email protected]> escribió: >> >> Entiendo el punto pero tengo que pasar por un array intermedio. La idea >>> es agarrar un archivo csv direcatamente a un dataframe y de ahi sacar el >>> dataframe con las combinaciones, el método actual sería: >>> >>> 1.- Importar csv en dataframe >>> 2.- Crear un array del dataframe >>> 3.- Crear los indices de las combinaciones >>> 4.- Usar la notacion de indices para crear el array >>> 5.- Crear el dataset a partir del array >>> >>> Método buscado: >>> >>> 1.- Importar csv en dataframe >>> 2.- Crear indices de las combinaciones >>> 3.- Usar "algo" usando los indices para crear el dataframe nuevo a >>> partir del dataframe viejo >>> >>> >>> import pandas as pd >> from itertools import combinations >> >> #Suponemos que este dataframe viene de leerlo con un pd.read_csv() >> #Lo dejo así por simplificar >> df0 = pd.DataFrame([list(range(i,i+5)) for i in range(0,50,5)], columns = >> range(5)) >> >> #creamos el dataframe de destino con 10 columnas >> df1 = pd.DataFrame(columns = range(10)) >> >> # De esta forma estás usando los índices del dataframe df0 para hacer las >> combinaciones >> for i,j in enumerate(combinations(df0.index,2)): >> df1.loc[i] = np.append(df0.ix[j[0]], df0.ix[j[1]]) >> >> El dataframe df1 tendría todas las combinaciones. Me sigue pareciendo >> complicado e innecesario lo que quieres hacer (a no ser que sea un >> ejercicio para clase y entonces podría entender lo rebuscado del asunto). >> >> Saludos. >> >> >>> >>> 2014-05-13 2:12 GMT-05:00 Kiko <[email protected]>: >>> >>> >>>> >>>> >>>> El 13 de mayo de 2014, 7:23, AGTUGO <[email protected]> escribió: >>>> >>>> Hola, >>>>> >>>>> He estado tratando de hacer implementacion solamente con panda de lo >>>>> siguiente que ya tengo con numpy, pero no me ha salido nada bien. Para los >>>>> mas entradillos con pandas espero que lo siguiente sea trivial. >>>>> >>>>> La entrada son datos tabulados de dos dimensiones o una matrix, la >>>>> idea es formar todas las combinaciones, sin repetir y sin sustitución, de >>>>> los renglones. La pareja de renglones se ponen en un solo renglon. >>>>> >>>>> Mi algoritmo actual es crear los indices de las combinaciones >>>>> posibles, y despues crear la mezcla usando los indices. En codigo sería lo >>>>> siguiente. >>>>> >>>>> #### combinaciones.py >>>>> >>>>> >>>>> import numpy as np >>>>> import itertools >>>>> rows = 10 >>>>> columns =5 >>>>> data = np.arange(rows*columns).reshape(rows,columns) >>>>> print('\n===Data===\n') >>>>> print(data) >>>>> to_mix = np.arange(rows) >>>>> mixed = list(itertools.product(to_mix,to_mix)) >>>>> combination = [x for x in mixed if (x[0]< x[1])] >>>>> combination = np.array(combination) >>>>> print('\n===Combination===\n') >>>>> print(combination) >>>>> >>>>> >>>>> final_data = >>>>> np.hstack((data[combination[:,0],:],data[combination[:,1],:])) >>>>> print('\n===Final Data===\n') >>>>> print(final_data) >>>>> >>>>> >>>>> >>>> No entiendo muy bien qué quieres hacer. Si tienes Pandas, tienes >>>> Numpy.¿Por qué no simplemente haces un DataFrame usando el numpy array >>>> final que has obtenido? >>>> >>>> Sin usar numpy (que deberías tener instalado porque tienes Pandas >>>> instalado, repito): >>>> >>>> from itertools import combinations >>>> >>>> lista = [list(range(i,i+5)) for i in range(0,50,5)] >>>> final = [] >>>> for i in combinations(range(10),2): >>>> final.append(lista[i[0]]+lista[i[1]]) >>>> df = pd.DataFrame(final, columns = range(10)) >>>> >>>> >>>>> >>>>> >>>>> Resultado: >>>>> >>>>> ===Data=== >>>>> >>>>> [[ 0 1 2 3 4] >>>>> [ 5 6 7 8 9] >>>>> [10 11 12 13 14] >>>>> ..., >>>>> [35 36 37 38 39] >>>>> [40 41 42 43 44] >>>>> [45 46 47 48 49]] >>>>> >>>>> ===Combination=== >>>>> >>>>> [[0 1] >>>>> [0 2] >>>>> [0 3] >>>>> ..., >>>>> [7 8] >>>>> [7 9] >>>>> [8 9]] >>>>> >>>>> ===Final Data=== >>>>> >>>>> [[ 0 1 2 ..., 7 8 9] >>>>> [ 0 1 2 ..., 12 13 14] >>>>> [ 0 1 2 ..., 17 18 19] >>>>> ..., >>>>> [35 36 37 ..., 42 43 44] >>>>> [35 36 37 ..., 47 48 49] >>>>> [40 41 42 ..., 47 48 49]] >>>>> >>>>> >>>>> >>>>> >>>>> Al parecer no es tan sencillo crear un nuevo dataframe usando los >>>>> indices en panda. Espero que me puedan dar una orientación saludos. >>>>> >>>>> >>>>> >>>>> -- >>>>> Arturo Muñoz Tolosa >>>>> >>>>> _______________________________________________ >>>>> Python-es mailing list >>>>> [email protected] >>>>> https://mail.python.org/mailman/listinfo/python-es >>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> Python-es mailing list >>>> [email protected] >>>> https://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>>> >>> >>> >>> -- >>> Arturo Muñoz Tolosa >>> >>> _______________________________________________ >>> Python-es mailing list >>> [email protected] >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> _______________________________________________ >> Python-es mailing list >> [email protected] >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > Arturo Muñoz Tolosa > > _______________________________________________ > Python-es mailing list > [email protected] > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list [email protected] https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
