Как я могу иметь случайный набор данных CSV с 4 столбцами и 100 строк - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь создать набор данных CSV с 4columns 'name' 'age' 'weight' 'height' и 100 строками случайных данных для этих столбцов, но мой код на первом шаге дал мне одну строку вместо 100 row, как я могу это исправить и как я могу преобразовать это в CSV-файл?

`import random
import pandas as pd
import numpy as np


person="person"
personList =[person+str(i) for i in range(100)]

ageList=[random.randint(1,90) for i in range(100)]

weightList=[random.randint(40,150) for i in range(100)]

heightList=[random.randint(140,210) for i in range(100)]

raw_data={'Name':[personList],
          'Age':[ageList],
          'Weight':[weightList],
          'Height':[heightList]}
df = pd.DataFrame([raw_data])

print(df)`

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Не передавайте значения в виде «списков списков», т.е. удаляйте внешние [ ]:

raw_data={'Name': personList,
          'Age': ageList,
          'Weight': weightList,
          'Height': heightList}
df = pd.DataFrame(raw_data)

Для вывода в формате csv используйте:

df.to_csv('./filename.csv')

[вне]

        Name  Age  Weight  Height
0    person0   23      59     158
1    person1   50      66     199
2    person2   18     100     183
3    person3    4      60     144
4    person4   14     123     188
5    person5   12      40     141
6    person6   44      65     171
7    person7   50      96     166
8    person8   82     114     166
9    person9   86     142     178
10  person10   51      93     142
11  person11    1      59     166
12  person12   61     138     152
13  person13   46      92     164
14  person14   25     103     195
15  person15   24      42     150
16  person16   33     123     186
17  person17   44      64     193
18  person18   40     118     159
19  person19   25     134     196
20  person20    5     117     178
...

Альтернативный подход заключается в использовании numpy.random, где большинство методов имеют параметр size:

import random
import pandas as pd
import numpy as np


person="person"
n = 100

personList = [person+str(i) for i in range(n)]

ageList = np.random.randint(1,90, size=n)

weightList = np.random.randint(40,150, size=n)

heightList = np.random.randint(140,210, size=n)

raw_data={'Name': personList,
          'Age': ageList,
          'Weight': weightList,
          'Height': heightList}
df = pd.DataFrame(raw_data)
0 голосов
/ 18 апреля 2019

numpy отлично подходит для построения случайных массивов, а pandas внутренне использует numpy массивы.Поэтому я советую использовать это:

...
ageList=np.random.randint(1,91,100)       # note the +1 on highest value  for np.random.randint

weightList=np.random.randint(40,151,100)

heightList=np.random.randint(140,211,100)

raw_data={'Name':[personList],
          'Age':[ageList],
          'Weight':[weightList],
          'Height':[heightList]}
df = pd.DataFrame(raw_data)              # note passing a mapping and not a sequence
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...