Чтение строковых значений из CSV - PullRequest
0 голосов
/ 27 апреля 2018
+-----------+-------+-----------------------+
|V1         |   n   | ip                    |
+-----------+-------+-----------------------+
|02-08-2017 |2      |00.121.187.120:3447    |
|03-08-2017 |5      |01.110.186.182:23      |
|30-07-2017 |13     |08.167.141.192:25      |
|26-07-2017 |19     |1.175.4.214:33274      |
|01-08-2017 |72     |10.174.218.134:59259   |
+-----------+-------+-----------------------+

Это мой CSV-файл, я пытаюсь использовать метод кластеризации, но мой столбец "V1" сохраняется как строка, поэтому я не могу его прочитать.

import pandas
import pylab as pl

from sklearn.cluster import KMeans

from sklearn.decomposition import PCA
import ast


variables = pandas.read_csv('D:\\Date\\date-dfki.csv',dtype=str)

Y =  variables[['V1']]

X = variables[['n']]
Nc = range(1, 20)

kmeans = [KMeans(n_clusters=i) for i in Nc]

kmeans

score = [kmeans[i].fit(Y).score(Y) for i in range(len(kmeans))]

счет

pl.plot(Nc,score)

pl.xlabel('Number of Clusters')

pl.ylabel('Score')

pl.title('Elbow Curve')

Пожалуйста, может кто-нибудь сказать мне, как это сделать, потому что я не могу скрыть строку в плавающем / int, я также не могу продолжить. Это ошибка, которую я получаю:

array = np.array(array, dtype=dtype, order=order, copy=copy)
**ValueError: could not convert string to float: '27-07-2017'**

1 Ответ

0 голосов
/ 28 апреля 2018

перечисляя здесь пример того, что можно сделать.

import pandas as pd
import numpy as np

#create dataset sample
d = {'V1': ["02-08-2017" , "03-08-2017"], 'n': ["2", "5"],'ip': ["104.44.194.237:25", "106.42.34.86:49324 "] }
df = pd.DataFrame(data=d, dtype=np.int8)
df.to_csv('date-dfki.csv', sep=',')


#here from where starts your read file:
parse_dates = ['V1'] #specify the column you need for datetime, because on read pandas automatically read the date as string. 
variables = pd.read_csv('date-dfki.csv', dtype={'V1': str, 'ip': np.str, 'n': np.int32}, parse_dates=parse_dates) #in data type you specify each column what format to use

набор данных переменных:

example dataset

Далее вам нужно очистить IP-адрес, чтобы вы могли конвертировать в int или float или любой другой формат, который вы хотите (я использовал int):

variables['ip'] = variables['ip'].str.replace('.', '') #removes '.'
variables['ip'] = variables['ip'].str.replace(':', '') #removes ':'
variables['ip'] = variables['ip'].astype(int) #convert to 'int'

со следующими результатами:

result conversion

Так что, если у вас есть несколько столбцов, вы можете сделать один и тот же процесс для каждого и конвертировать в любой формат, который вы хотите.

Вот преобразование с плавающей точкой:

variables['ip'] = variables['ip'].astype(float) #or float conversion

float conversion

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...