Je charge des données d'apprentissage automatique à partir d'un fichier CSV. Les deux premières colonnes sont des observations et les autres colonnes sont des caractéristiques.
Actuellement, je fais ce qui suit :
data = pandas.read_csv('mydata.csv')
ce qui donne quelque chose comme :
data = pandas.DataFrame(np.random.rand(10,5), columns = list('abcde'))
Je voudrais découper ce cadre de données en deux cadres de données : l'un contenant les colonnes a
et b
et une autre contenant les colonnes c
, d
et e
.
Il n'est pas possible d'écrire quelque chose comme
observations = data[:'c']
features = data['c':]
Je ne sais pas quelle est la meilleure méthode. Ai-je besoin d'un pd.Panel
?
Au fait, je trouve l'indexation des dataframes assez incohérente : data['a']
est autorisé, mais data[0]
ne l'est pas. De l'autre côté, data['a':]
n'est pas autorisé mais data[0:]
est. Y a-t-il une raison pratique à cela ? C'est vraiment déroutant si les colonnes sont indexées par Int, étant donné que data[0] != data[0:1]
4 votes
DataFrame est intrinsèquement un objet de type dictée lorsque vous faites df[...], cependant certaines commodités, par ex.
df[5:10]
ont été ajoutés pour la sélection des lignes ( pandas.pydata.org/pandas-docs/stable/ )1 votes
Cette incohérence est donc une décision de conception en faveur de la commodité ? D'accord, mais il faut absolument que ce soit plus explicite pour les débutants !
3 votes
Le fait de prendre en compte la commodité dans la conception rend la courbe d'apprentissage beaucoup plus raide. J'aimerais qu'il y ait une meilleure documentation pour les débutants présentant simplement une interface cohérente. Par exemple, il suffit de se concentrer sur l'interface ix.