11
votes

Comment vérifier la corrélation à l'aide de nombres / données décimales avec Python 3

Merci pour votre temps.

J'écris du code qui vérifie la corrélation entre plusieurs ensembles de données. Cela fonctionne bien lorsque j'utilise les données d'origine (ce que je suis honnêtement incertain de quel format il se trouve à ce point), mais après avoir exécuté les données à l'aide de certaines équations à l'aide du module décimal, l'ensemble de données ne s'affichera pas lorsqu'il est testé. Pour la corrélation. P>

Je me sens vraiment stupide et nouveau lol, je suis sûr que c'est une solution très facile. P>

Voici un petit programme que j'ai écrit pour démontrer ce que je veux dire. P > xxx pré>

Les données des deux listes A et B ainsi que H & F sont exactement identiques, la seule différence d'A & B étant des nombres décimaux formés, où sont les suivants: H & F. non. p>

Lorsque le programme est exécuté, A & B Retourne: P>

          H         J
H  1.000000  0.995657
J  0.995657  1.000000


3 commentaires

En réalité, sur toutes les premières questions posées par les utilisateurs que j'ai examinés, vous avez l'une des meilleures écrites, avec le plus d'exemple de code. Accessoires pour une question bien commune.


Je ne pense pas que les numéros ou les pandas soutient le type décimal en tant que tel. Pandas traite votre tableau comme une éventail d'objets. Si vous voulez que Pandas les traite comme des chiffres, je pense que vous aurez besoin de convertir en float.


Votre liste de décimal Des objets seront transformés en un objet objet dtype dataframe ou numpy tableau. cor_data1.dtypes . Certaines opérations de mathématiques fonctionnent sur la matrice d'objet, mais il est frappé et mademoiselle. Cor est l'une de ces victimes. cor.data1._get_numeric_data () vient vide.


3 Réponses :


3
votes

Pandas n'a pas de support particulier pour le type décimal, il traite donc de type "objet". Cela signifie que des méthodes telles que .corr qui ne fonctionnent que sur des colonnes numériques ne considéreront pas les colonnes décimales à valoriser. De nombreuses fonctions numpues et scieuses ne fonctionneront pas non plus correctement sur des décimales, car les objets décimaux ne peuvent pas être combinés avec des flotteurs ordinaires dans des opérations mathématiques. (Il ressemble à scipy.stats.pearsonr ne fonctionne pas, mais scipy.stats.spearmanr fait.)

Pour la plupart des opérations numériques dans Numpy / Pandas, vous devrez convertir vos données en flotteurs.


0 commentaires

4
votes

Pandas ne reconnaît pas les données sous forme de valeurs numériques. Voici comment convertir vos données en float.

pd.to_numeric(corr_data1['A'], errors='coerce')

# 0   NaN
# 1   NaN
# 2   NaN
# 3   NaN
# 4   NaN
# 5   NaN


0 commentaires

1
votes

En plus des autres réponses fines décrivant la manière dont vous aurez besoin de valeurs de point flottant pour la corrélation, votre stratégie de saisie de décimal code> est mal cassée.

[Decimal('2.3'),
 Decimal('1.5'),
 Decimal('5.7'),
 Decimal('4.6'),
 Decimal('5.5'),
 Decimal('1.5')]


0 commentaires