-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdataGen.py
More file actions
80 lines (57 loc) · 2.3 KB
/
dataGen.py
File metadata and controls
80 lines (57 loc) · 2.3 KB
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import pandas as pd
import random as rd
import numpy as np
n=212 #numero de lineas a generar
ignorefirst=2 #ignora correo y fecha
eBase="pi3.csv" #nombre la encuesta que ya tengas
eGen="nueva_data.csv" #nombre de la encuesta generada
#tienen que ser .csv
#extrayendo las variables de la encuesta
DF = pd.read_csv(eBase)
DF.dropna(
axis=0,
inplace=True
)
nombres=DF.columns
###
seleccion={}
for i in nombres:
seleccion[i]={"variables":[],"siguientes":[]}
for i in range(ignorefirst,len(nombres)):#recorre las columnas y recolecta las variables con su frecuencia relativa
seleccion[nombres[i]]["variables"]=pd.value_counts(DF.iloc[:,i])#.to_dict()
if i< len(nombres)-1:
for j in range(len(seleccion[nombres[i]]["variables"])):
le_sigue= DF.iloc[:,i] == seleccion[nombres[i]]["variables"].index[j]
seleccion[nombres[i]]["siguientes"].append(pd.value_counts(DF[le_sigue].iloc[:,i+1]))
# print(seleccion[nombres[i]]["siguientes"])
d={}
for i in nombres:
d[i]=[]
#print(seleccion)
for x in range(n):#cantidad de filas generadas
elec=rd.choices(seleccion[nombres[ignorefirst]]["variables"].index,
weights=seleccion[nombres[ignorefirst]]["variables"].values,
k=1)
d[nombres[ignorefirst]].append(elec[0])
# print(d[nombres[ignorefirst]][-1]==seleccion[nombres[ignorefirst]]["variables"].index)
# print(len(seleccion[nombres[ignorefirst]]["variables"]))
# print(np.where(d[nombres[ignorefirst]][-1]==seleccion[nombres[ignorefirst]]["variables"].index)[0][0])
for i in range(len(nombres)-1):#recorrer columnas
# print(i)
if i<ignorefirst:
d[nombres[i]].append("")
continue
variables=seleccion[nombres[i]]["variables"].index
# print(variables)
# print(d[nombres[i]][-1])
sig=np.where(variables==d[nombres[i]][-1])[0][0]
# print(sig)
# print(seleccion[nombres[i]]["siguientes"][sig].values)
elec=rd.choices(seleccion[nombres[i]]["siguientes"][sig].index,
weights=seleccion[nombres[i]]["siguientes"][sig].values,k=1)
d[nombres[i+1]].append(elec[0])
#print(d)
##convirtieno el diccionario a un dataframe y guardandolo en un archivo.csv
d=pd.DataFrame.from_dict(d)
d.to_csv(eGen,sep=",", index=False)
###