DataFrame est un objet de bibliothèque très utile qui est souvent utilisé lorsque vous travaillez avec des données en langage Python ou R ou lorsque vous souhaitez faire du machine learning. Il a diverses fonctions pour gérer les données tabulaires et les données de tableau à 2 dimensions. https://amalog.hateblo.jp/entry/kaggle-pandas-tips
Comme c'est pratique, c'est indispensable lors de l'utilisation de données 2D, comme la lecture de données à partir d'Excel ou CSV à la fois, l'extraction d'une matrice arbitraire d'un tableau 2D, la jonction de tables comme des opérations SQL, etc. C'est un niveau qui ne peut pas être fait.
Mais avec Java, il n'y a pas d'implémentation équivalente à DataFrame, donc je ne peux pas bénéficier de DataFrame, il faut du temps pour traiter les données, et je suis attristé par les mots abusifs (?) Pourquoi est-ce Python? Voilà pourquoi.
Morpheus data science framework
Cependant, il y a un rayon de lumière là-bas. Le framework de science des données Morpheus fournit (probablement) des fonctionnalités équivalentes à ce DataFrame. https://github.com/zavtech/morpheus-core
Essayons-le selon un exemple simple.
Consider a dataset of motor vehicle characteristics accessible here. The code below loads this CSV data into a Morpheus DataFrame, filters the rows to only include those vehicles that have a power to weight ratio > 0.1 (where weight is converted into kilograms), then adds a column to record the relative efficiency between highway and city mileage (MPG), sorts the rows by this newly added column in descending order, and finally records this transformed result to a CSV file.
Nous utiliserons les données caractéristiques de la voiture (dans cet échantillon). Chargez le CSV dans le Morpheus DataFrame, filtrez les lignes pour les rapports de poids de sortie (puissance) supérieurs à 0,1 et ajoutez une colonne pour le rapport MPG autoroute / urbain. Triez en fonction des colonnes ajoutées et exportez les résultats dans un fichier CSV.
import com.zavtech.morpheus.frame.*;
public class MorpheusTester {
public static void main(String[] args) {
DataFrame.read().csv(options -> {
options.setResource("http://zavtech.com/data/samples/cars93.csv");
options.setExcludeColumnIndexes(0);
}).rows().select(row -> {
double weightKG = row.getDouble("Weight") * 0.453592d;
double horsepower = row.getDouble("Horsepower");
return horsepower / weightKG > 0.1d;
}).cols().add("MPG(Highway/City)", Double.class, v -> {
double cityMpg = v.row().getDouble("MPG.city");
double highwayMpg = v.row().getDouble("MPG.highway");
return highwayMpg / cityMpg;
}).rows().sort(false, "MPG(Highway/City)").write().csv(options -> {
options.setFile("./cars93m.csv");
options.setTitle("DataFrame");
});
}
}
Puisque le type de retour est le type DataFrame, vous pouvez exécuter csv (), select (), add (), sort () successivement dans la chaîne de méthodes. La zone autour de csv () ressemble beaucoup à DataFrame.
Données avant traitement
Données traitées
DataFrame est riche en fonctionnalités et il n'est pas facile de tester l'égalité, mais j'ai pu voir des opérations telles que l'extraction de lignes, l'ajout de colonnes et le tri.
Lors du traitement de données avec Java, vous pouvez envisager de l'utiliser.
Recommended Posts