Python - Diccionarios Anidados y uso de pandas

 
Vista:

Diccionarios Anidados y uso de pandas

Publicado por Ariana (2 intervenciones) el 06/08/2017 03:35:18
He creado un diccionario anidado, ese diccionario debe ser llenado con un archivo csv que contiene 9338 lineas, pero al crear el diccionario se duplican o triplican la cantidad de diccionarios dentro del principal. Ademas hice otro procedimiento pero en cambio con ese, solo se me llena el ultimo registro. La instrucción que me dan es crear un diccionario anidado que contenga la información de un archivo de excel en formato csv y ese diccionario anidado usarlo para crear un dataframe.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Diccionarios Anidados y uso de pandas

Publicado por xve (1646 intervenciones) el 06/08/2017 08:46:35
Hola Ariana, no nos muestras ningún código.. no se muy bien como ayudarte!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Diccionarios Anidados y uso de pandas

Publicado por Ariana (1 intervención) el 06/08/2017 16:46:45
Este es el código. Solo se guarda el ultimo registro.
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
def leerDataset(nombreArch=" "):
    archivo=pd.read_csv(nombreArch) #Lee el archivo que ingrese el usuario por teclado para empezar trabajarlo
    for linea in archivo: #Iteracion del archivo csv
        datos = linea.split(";")
        for ind, fila in archivo.iterrows():#claves=ind y fila contiene cada fila del dataframe
            row = list(fila) #conversion de la fila del dataframe a lista
            informacionfilas = row[0].strip().split(";") #separacion de datos y enviados a una nueva lista
            claves.append(ind)#Guardo los indices
            info_data.append(informacionfilas) #Guardo las filas ya separados cada dato
            #print(informacionfilas)
        dic = {}
        temporal = []
        minisdiccionario = []
        for indice in range(28):# recorro la lista que contiene las claves del diccinario principal
            for filas in info_data:  # extraigo la informacion por final tal como se encuentran en el dataframe
                for x in range(len(claves)):  # recorro las claves
                    dato = filas[indice] # extraigo el dato para el mini diccionario que dentro del principal
                    temporal.append(dato)  # agrego el dato a una lista temporal (además esta lista contendra los datos que necesito para cada diccionario)
                    for item in temporal:  # itero la lista para obtener el dato que necesito para la clave
                        dic[claves[x]] = dato  # agrego el dato a la clave coorespondiente del mini diccionario
                    if dic not in minisdiccionario:
                        minisdiccionario.append(dic)  # agrego los minis diccionarios
                print(dic)
        for objeto in datos:
            for i in range(len(minisdiccionario)):  # itero la lista de los minis diccionarios
                Diccionario[objeto] = minisdiccionario[i]  # agrego al diccionario principal
            print(minisdiccionario)
    #print(Diccionario)
    return Diccionario
y tengo este otro. Pero en cambio se me duplica o triplica las tuplas para el diccionario.
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
for objeto in range(len(datos)-1):#itero sobre los datos
		for filas in info_data:#tomo cada fila del dataframe
			for clave in claves: #Tomo la clave para el diccionario secundaria
				tupla=(clave,filas[objeto])#genero tuplas que contienen la clave y el valor para cada diccionario
				if tupla not in listatup:#valido que la tupla no este en la lista
					listatup.append(tupla) #agrego la tupla
		print(listatup)
	for ind_tp in range(len(listatup)-56):#itero la lista que contiene a todas las tuplas
		minidic = dict(listatup[0:len(claves)])#convierto en diccionario a traves de particiones de avuerdo a la cantidad de claves
		listdict.append(minidic)#agrego el mini diccionario a una nueva lista
		del(listatup[0:len(claves)])#borro la parte que ya converti en diccionario
	for objeto in range(len(datos)):#
		Diccionario[datos[objeto]]=listdict[objeto]#agrego al diccionario mayor
 
	for objeto in range(len(datos)):  # itero sobre los datos
		for filas in info_data:  # tomo cada fila del dataframe
			for clave in claves:  # Tomo la clave para el diccionario secundaria
				tupla = (clave, filas[objeto])  # genero tuplas que contienen la clave y el valor para cada diccionario
				if tupla not in listatup:  # valido que la tupla no este en la lista
					listatup.append(tupla)  # agrego la tupla
	for ind_tp in range(len(listatup)-56):  # itero la lista que contiene a todas las tuplas
		minidic = dict(listatup[0:len(claves)])  # convierto en diccionario a traves de particiones de avuerdo a la cantidad de claves
		listdict.append(minidic)  # agrego el mini diccionario a una nueva lista
		del (listatup[0:len(claves)])  # borro la parte que ya converti en diccionario
	for objeto in range(len(datos)):  #
		Diccionario[datos[objeto]] = listdict[objeto]  # agrego al diccionario mayor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Diccionarios Anidados y uso de pandas

Publicado por Ariana (2 intervenciones) el 07/08/2017 10:34:26
Gracias. Ya resolví el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar