извлекать данные столбцов CSV в отдельный массив Numpy - PullRequest
0 голосов
/ 05 ноября 2019

Извлечение данных из указанного CSV-файла SalaryGender и сохранение данных из каждого столбца в отдельном массиве NumPy

Пример данных SalaryGender.csv

Salary,Gender,Age,PhD
140,1,47,1
30,0,65,1
35.1,0,56,0
30,1,23,0
80,0,53,1

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019
In [199]: txt = """Salary,Gender,Age,PhD 
     ...: 140,1,47,1 
     ...: 30,0,65,1 
     ...: 35.1,0,56,0 
     ...: 30,1,23,0 
     ...: 80,0,53,1"""

Мы можем загрузить ваш образец в виде структурированного массива:

In [203]: data = np.genfromtxt(txt.splitlines(), dtype=None, delimiter=',', encoding=None, names=True)                                                
In [204]: data                                                                  
Out[204]: 
array([(140. , 1, 47, 1), ( 30. , 0, 65, 1), ( 35.1, 0, 56, 0),
       ( 30. , 1, 23, 0), ( 80. , 0, 53, 1)],
      dtype=[('Salary', '<f8'), ('Gender', '<i8'), ('Age', '<i8'), ('PhD', '<i8')])

Каждый элемент массива является строкой файла;имена полей берутся из строки заголовка, поле dtype выводится из данных.

Поля могут быть доступны по имени:

In [205]: data['Salary']                                                        
Out[205]: array([140. ,  30. ,  35.1,  30. ,  80. ])
In [206]: data['Gender']                                                        
Out[206]: array([1, 0, 0, 1, 0])

К ним можно получить доступ таким образом или их можно назначитьпеременная

salary = data['Salary']

Вы также можете использовать unpack:

In [213]: a,b,c,d = np.genfromtxt(txt.splitlines(),  delimiter=',', encoding=Non
     ...: e, skip_header=1, unpack=True)                                        
In [214]: a                                                                     
Out[214]: array([140. ,  30. ,  35.1,  30. ,  80. ])
In [215]: b                                                                     
Out[215]: array([1., 0., 0., 1., 0.])
In [216]: c                                                                     
Out[216]: array([47., 65., 56., 23., 53.])
In [217]: d                                                                     
Out[217]: array([1., 1., 0., 0., 1.])

Иногда проще загрузить файл по одному (или выбранному) столбцу за раз:

In [218]: b = np.genfromtxt(txt.splitlines(),  delimiter=',', encoding=None, ski
     ...: p_header=1, usecols=[1])                                              
In [219]: b                                                                     
Out[219]: array([1., 0., 0., 1., 0.])
0 голосов
/ 05 ноября 2019

Использование: DataFrame.groupby

, которое создаст список, в котором каждый элемент имеет пустой массив каждого столбца:

[group.values for i,group in df.groupby(level=0,axis=1)]

Если выне ищите список, тогда используйте:

for i,group in df.groupby(level=0,axis=1):
       print(group.values)
       .....

Также вы можете использовать DataFrame.iteritems:

for i,col in df.iteritems():
    print(col.to_numpy())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...