« Restructurer un tableau de données dyadiques » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
(Page blanchie)
Balise : Blanchiment
Aucun résumé des modifications
Ligne 1 : Ligne 1 :


Ce script python est destiné à convertir un fichier de données dyadiques d'une structure individuelle à une structure dyadique. Il nécessite python3+ et la librairie pandas.
Pour installer pandas : python -m pip install --upgrade pandas dans le terminal.
Structure individuelle :
![dyadic_individual_structure.gif](attachment:dyadic_individual_structure.gif)
Structure dyadique :
![dyadic_dyadic_structure.gif](attachment:dyadic_dyadic_structure.gif)
# <b>Code</b>
```python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import pandas as pd
```
<b>Indiquer le chemin du dossier contenant le fichier .csv à la place de path (entre guillemets)</b>
```python
os.chdir('D:\\Google Drive\\1-These\\13-EATMINT2\\Analyses\\Questionnaires')
```
<b>Indiquer le nom du fichier .csv à la place de file (entre guillemets)</b>
```python
df1 = pd.read_csv('questionnaire_raw_data_individual_structure.csv',sep=';')
```
Voir les premières lignes de votre fichier :
```python
df1.head()
```
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }
    .dataframe tbody tr th {
        vertical-align: top;
    }
    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Dyade</th>
      <th>Sujet</th>
      <th>Sexe</th>
      <th>Condition</th>
      <th>Score Raven</th>
      <th>Activation_soi</th>
      <th>Anxiété_soi</th>
      <th>Colère_soi</th>
      <th>Contrôle_soi</th>
      <th>Déception_soi</th>
      <th>...</th>
      <th>Mon partenaire mettait nos différences en évidence</th>
      <th>Mon partenaire n'était pas réceptif à ce que je lui disais</th>
      <th>Mon partenaire n'était pas très sûr de lui</th>
      <th>Mon partenaire ne se fiait pas à ce que je lui proposais</th>
      <th>Mon partenaire ne semblait pas enthousiasmé par nos échanges</th>
      <th>Mon partenaire se comportait comme s'il était plus fort que moi</th>
      <th>Mon partenaire se montrait aimable envers moi</th>
      <th>Mon partenaire se montrait autant intéressé par la construction d'une bonne entente entre nous que par la résolution de la tâche</th>
      <th>Mon partenaire se montrait tendu et\ou agacé</th>
      <th>Mon partenaire voulait rester coller à l'objectif principal de la tâche</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>1</td>
      <td>H</td>
      <td>CBVB</td>
      <td>20.0</td>
      <td>4</td>
      <td>1.0</td>
      <td>3</td>
      <td>2.0</td>
      <td>6.0</td>
      <td>...</td>
      <td>1.0</td>
      <td>2.0</td>
      <td>5.0</td>
      <td>3</td>
      <td>1</td>
      <td>1.0</td>
      <td>7</td>
      <td>6</td>
      <td>1</td>
      <td>3.0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>1</td>
      <td>2</td>
      <td>H</td>
      <td>CBVB</td>
      <td>22.0</td>
      <td>4</td>
      <td>1.0</td>
      <td>1</td>
      <td>2.0</td>
      <td>5.0</td>
      <td>...</td>
      <td>1.0</td>
      <td>1.0</td>
      <td>2.0</td>
      <td>1</td>
      <td>1</td>
      <td>1.0</td>
      <td>7</td>
      <td>7</td>
      <td>1</td>
      <td>6.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>2</td>
      <td>1</td>
      <td>H</td>
      <td>CBVH</td>
      <td>19.0</td>
      <td>5</td>
      <td>2.0</td>
      <td>3</td>
      <td>4.0</td>
      <td>2.0</td>
      <td>...</td>
      <td>2.0</td>
      <td>1.0</td>
      <td>2.0</td>
      <td>1</td>
      <td>1</td>
      <td>1.0</td>
      <td>7</td>
      <td>7</td>
      <td>4</td>
      <td>7.0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>2</td>
      <td>2</td>
      <td>H</td>
      <td>CBVH</td>
      <td>17.0</td>
      <td>4</td>
      <td>3.0</td>
      <td>1</td>
      <td>5.0</td>
      <td>1.0</td>
      <td>...</td>
      <td>1.0</td>
      <td>2.0</td>
      <td>2.0</td>
      <td>3</td>
      <td>1</td>
      <td>5.0</td>
      <td>6</td>
      <td>7</td>
      <td>2</td>
      <td>4.0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>3</td>
      <td>1</td>
      <td>H</td>
      <td>CHVB</td>
      <td>23.0</td>
      <td>4</td>
      <td>6.0</td>
      <td>2</td>
      <td>3.0</td>
      <td>6.0</td>
      <td>...</td>
      <td>5.0</td>
      <td>1.0</td>
      <td>4.0</td>
      <td>1</td>
      <td>1</td>
      <td>1.0</td>
      <td>6</td>
      <td>7</td>
      <td>4</td>
      <td>5.0</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 125 columns</p>
</div>
<b>Supprimer les colonnes pour lesquelles le changement de structure ne s'applique pas</b>
```python
data = df1.drop(['Dyade','Sujet','Sexe','Condition'], axis = 1)
data.head()
```
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }
    .dataframe tbody tr th {
        vertical-align: top;
    }
    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Score Raven</th>
      <th>Activation_soi</th>
      <th>Anxiété_soi</th>
      <th>Colère_soi</th>
      <th>Contrôle_soi</th>
      <th>Déception_soi</th>
      <th>Désespoir_soi</th>
      <th>Ennui_soi</th>
      <th>Espoir_soi</th>
      <th>Fierté_soi</th>
      <th>...</th>
      <th>Mon partenaire mettait nos différences en évidence</th>
      <th>Mon partenaire n'était pas réceptif à ce que je lui disais</th>
      <th>Mon partenaire n'était pas très sûr de lui</th>
      <th>Mon partenaire ne se fiait pas à ce que je lui proposais</th>
      <th>Mon partenaire ne semblait pas enthousiasmé par nos échanges</th>
      <th>Mon partenaire se comportait comme s'il était plus fort que moi</th>
      <th>Mon partenaire se montrait aimable envers moi</th>
      <th>Mon partenaire se montrait autant intéressé par la construction d'une bonne entente entre nous que par la résolution de la tâche</th>
      <th>Mon partenaire se montrait tendu et\ou agacé</th>
      <th>Mon partenaire voulait rester coller à l'objectif principal de la tâche</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>20.0</td>
      <td>4</td>
      <td>1.0</td>
      <td>3</td>
      <td>2.0</td>
      <td>6.0</td>
      <td>2.0</td>
      <td>5</td>
      <td>NaN</td>
      <td>3</td>
      <td>...</td>
      <td>1.0</td>
      <td>2.0</td>
      <td>5.0</td>
      <td>3</td>
      <td>1</td>
      <td>1.0</td>
      <td>7</td>
      <td>6</td>
      <td>1</td>
      <td>3.0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>22.0</td>
      <td>4</td>
      <td>1.0</td>
      <td>1</td>
      <td>2.0</td>
      <td>5.0</td>
      <td>2.0</td>
      <td>1</td>
      <td>5.0</td>
      <td>2</td>
      <td>...</td>
      <td>1.0</td>
      <td>1.0</td>
      <td>2.0</td>
      <td>1</td>
      <td>1</td>
      <td>1.0</td>
      <td>7</td>
      <td>7</td>
      <td>1</td>
      <td>6.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>19.0</td>
      <td>5</td>
      <td>2.0</td>
      <td>3</td>
      <td>4.0</td>
      <td>2.0</td>
      <td>1.0</td>
      <td>1</td>
      <td>3.0</td>
      <td>5</td>
      <td>...</td>
      <td>2.0</td>
      <td>1.0</td>
      <td>2.0</td>
      <td>1</td>
      <td>1</td>
      <td>1.0</td>
      <td>7</td>
      <td>7</td>
      <td>4</td>
      <td>7.0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>17.0</td>
      <td>4</td>
      <td>3.0</td>
      <td>1</td>
      <td>5.0</td>
      <td>1.0</td>
      <td>2.0</td>
      <td>1</td>
      <td>7.0</td>
      <td>5</td>
      <td>...</td>
      <td>1.0</td>
      <td>2.0</td>
      <td>2.0</td>
      <td>3</td>
      <td>1</td>
      <td>5.0</td>
      <td>6</td>
      <td>7</td>
      <td>2</td>
      <td>4.0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>23.0</td>
      <td>4</td>
      <td>6.0</td>
      <td>2</td>
      <td>3.0</td>
      <td>6.0</td>
      <td>2.0</td>
      <td>1</td>
      <td>2.0</td>
      <td>5</td>
      <td>...</td>
      <td>5.0</td>
      <td>1.0</td>
      <td>4.0</td>
      <td>1</td>
      <td>1</td>
      <td>1.0</td>
      <td>6</td>
      <td>7</td>
      <td>4</td>
      <td>5.0</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 121 columns</p>
</div>
<b>Mettre les noms des colonnes dans une variable</b>
```python
variables = data.columns
```
<b>Créer un nouveau tableau de données</b>
```python
new_data = pd.DataFrame()
```
<b>Pour chaque colonne, mettre dans p1 les valeurs paires et dans p2 les valeurs p2.
Donner un index identique pour p1 et p2.
Ajouter les deux colonnes à la suite dans le tableau de données</b>
```python
for i in variables:
    p1 = data[i].iloc[::2]
    p1.index = range(1,len(p1)+1)
   
    p2 = data[i].iloc[1::2]
    p2.index = range(1,len(p2)+1)
    v = i
    v1 = i + '_p1'
    v2 = i + '_p2'
   
    new_data[v1] = p1
    new_data[v2] = p2
```
```python
new_data.head()
```
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }
    .dataframe tbody tr th {
        vertical-align: top;
    }
    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Score Raven_p1</th>
      <th>Score Raven_p2</th>
      <th>Activation_soi_p1</th>
      <th>Activation_soi_p2</th>
      <th>Anxiété_soi_p1</th>
      <th>Anxiété_soi_p2</th>
      <th>Colère_soi_p1</th>
      <th>Colère_soi_p2</th>
      <th>Contrôle_soi_p1</th>
      <th>Contrôle_soi_p2</th>
      <th>...</th>
      <th>Mon partenaire se comportait comme s'il était plus fort que moi_p1</th>
      <th>Mon partenaire se comportait comme s'il était plus fort que moi_p2</th>
      <th>Mon partenaire se montrait aimable envers moi_p1</th>
      <th>Mon partenaire se montrait aimable envers moi_p2</th>
      <th>Mon partenaire se montrait autant intéressé par la construction d'une bonne entente entre nous que par la résolution de la tâche_p1</th>
      <th>Mon partenaire se montrait autant intéressé par la construction d'une bonne entente entre nous que par la résolution de la tâche_p2</th>
      <th>Mon partenaire se montrait tendu et\ou agacé_p1</th>
      <th>Mon partenaire se montrait tendu et\ou agacé_p2</th>
      <th>Mon partenaire voulait rester coller à l'objectif principal de la tâche_p1</th>
      <th>Mon partenaire voulait rester coller à l'objectif principal de la tâche_p2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>1</th>
      <td>20.0</td>
      <td>22.0</td>
      <td>4</td>
      <td>4</td>
      <td>1.0</td>
      <td>1.0</td>
      <td>3</td>
      <td>1</td>
      <td>2.0</td>
      <td>2.0</td>
      <td>...</td>
      <td>1.0</td>
      <td>1.0</td>
      <td>7</td>
      <td>7</td>
      <td>6</td>
      <td>7</td>
      <td>1</td>
      <td>1</td>
      <td>3.0</td>
      <td>6.0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>19.0</td>
      <td>17.0</td>
      <td>5</td>
      <td>4</td>
      <td>2.0</td>
      <td>3.0</td>
      <td>3</td>
      <td>1</td>
      <td>4.0</td>
      <td>5.0</td>
      <td>...</td>
      <td>1.0</td>
      <td>5.0</td>
      <td>7</td>
      <td>6</td>
      <td>7</td>
      <td>7</td>
      <td>4</td>
      <td>2</td>
      <td>7.0</td>
      <td>4.0</td>
    </tr>
    <tr>
      <th>3</th>
      <td>23.0</td>
      <td>21.0</td>
      <td>4</td>
      <td>4</td>
      <td>6.0</td>
      <td>4.0</td>
      <td>2</td>
      <td>5</td>
      <td>3.0</td>
      <td>3.0</td>
      <td>...</td>
      <td>1.0</td>
      <td>1.0</td>
      <td>6</td>
      <td>7</td>
      <td>7</td>
      <td>7</td>
      <td>4</td>
      <td>1</td>
      <td>5.0</td>
      <td>7.0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>21.0</td>
      <td>21.0</td>
      <td>4</td>
      <td>4</td>
      <td>3.0</td>
      <td>3.0</td>
      <td>2</td>
      <td>3</td>
      <td>5.0</td>
      <td>NaN</td>
      <td>...</td>
      <td>5.0</td>
      <td>1.0</td>
      <td>7</td>
      <td>6</td>
      <td>6</td>
      <td>7</td>
      <td>1</td>
      <td>2</td>
      <td>6.0</td>
      <td>6.0</td>
    </tr>
    <tr>
      <th>5</th>
      <td>23.0</td>
      <td>22.0</td>
      <td>4</td>
      <td>4</td>
      <td>1.0</td>
      <td>2.0</td>
      <td>1</td>
      <td>1</td>
      <td>4.0</td>
      <td>2.0</td>
      <td>...</td>
      <td>4.0</td>
      <td>2.0</td>
      <td>7</td>
      <td>6</td>
      <td>7</td>
      <td>7</td>
      <td>1</td>
      <td>2</td>
      <td>5.0</td>
      <td>6.0</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 242 columns</p>
</div>
<b>Exporter le fichier .csv restructuré</b>
```python
new_data.to_csv('out.csv',sep=';')
```

Version du 15 novembre 2018 à 17:05

Ce script python est destiné à convertir un fichier de données dyadiques d'une structure individuelle à une structure dyadique. Il nécessite python3+ et la librairie pandas.

Pour installer pandas : python -m pip install --upgrade pandas dans le terminal.

Structure individuelle :

![dyadic_individual_structure.gif](attachment:dyadic_individual_structure.gif)

Structure dyadique :

![dyadic_dyadic_structure.gif](attachment:dyadic_dyadic_structure.gif)

  1. Code


```python

  1. !/usr/bin/env python
  2. -*- coding: utf-8 -*-

import os import pandas as pd ```

Indiquer le chemin du dossier contenant le fichier .csv à la place de path (entre guillemets)


```python os.chdir('D:\\Google Drive\\1-These\\13-EATMINT2\\Analyses\\Questionnaires') ```

Indiquer le nom du fichier .csv à la place de file (entre guillemets)


```python df1 = pd.read_csv('questionnaire_raw_data_individual_structure.csv',sep=';') ```

Voir les premières lignes de votre fichier :


```python df1.head() ```



<style scoped>

   .dataframe tbody tr th:only-of-type {
       vertical-align: middle;
   }
   .dataframe tbody tr th {
       vertical-align: top;
   }
   .dataframe thead th {
       text-align: right;
   }

</style>

<thead> </thead> <tbody> </tbody>
Dyade Sujet Sexe Condition Score Raven Activation_soi Anxiété_soi Colère_soi Contrôle_soi Déception_soi ... Mon partenaire mettait nos différences en évidence Mon partenaire n'était pas réceptif à ce que je lui disais Mon partenaire n'était pas très sûr de lui Mon partenaire ne se fiait pas à ce que je lui proposais Mon partenaire ne semblait pas enthousiasmé par nos échanges Mon partenaire se comportait comme s'il était plus fort que moi Mon partenaire se montrait aimable envers moi Mon partenaire se montrait autant intéressé par la construction d'une bonne entente entre nous que par la résolution de la tâche Mon partenaire se montrait tendu et\ou agacé Mon partenaire voulait rester coller à l'objectif principal de la tâche
0 1 1 H CBVB 20.0 4 1.0 3 2.0 6.0 ... 1.0 2.0 5.0 3 1 1.0 7 6 1 3.0
1 1 2 H CBVB 22.0 4 1.0 1 2.0 5.0 ... 1.0 1.0 2.0 1 1 1.0 7 7 1 6.0
2 2 1 H CBVH 19.0 5 2.0 3 4.0 2.0 ... 2.0 1.0 2.0 1 1 1.0 7 7 4 7.0
3 2 2 H CBVH 17.0 4 3.0 1 5.0 1.0 ... 1.0 2.0 2.0 3 1 5.0 6 7 2 4.0
4 3 1 H CHVB 23.0 4 6.0 2 3.0 6.0 ... 5.0 1.0 4.0 1 1 1.0 6 7 4 5.0

5 rows × 125 columns


Supprimer les colonnes pour lesquelles le changement de structure ne s'applique pas


```python data = df1.drop(['Dyade','Sujet','Sexe','Condition'], axis = 1) data.head() ```



<style scoped>

   .dataframe tbody tr th:only-of-type {
       vertical-align: middle;
   }
   .dataframe tbody tr th {
       vertical-align: top;
   }
   .dataframe thead th {
       text-align: right;
   }

</style>

<thead> </thead> <tbody> </tbody>
Score Raven Activation_soi Anxiété_soi Colère_soi Contrôle_soi Déception_soi Désespoir_soi Ennui_soi Espoir_soi Fierté_soi ... Mon partenaire mettait nos différences en évidence Mon partenaire n'était pas réceptif à ce que je lui disais Mon partenaire n'était pas très sûr de lui Mon partenaire ne se fiait pas à ce que je lui proposais Mon partenaire ne semblait pas enthousiasmé par nos échanges Mon partenaire se comportait comme s'il était plus fort que moi Mon partenaire se montrait aimable envers moi Mon partenaire se montrait autant intéressé par la construction d'une bonne entente entre nous que par la résolution de la tâche Mon partenaire se montrait tendu et\ou agacé Mon partenaire voulait rester coller à l'objectif principal de la tâche
0 20.0 4 1.0 3 2.0 6.0 2.0 5 NaN 3 ... 1.0 2.0 5.0 3 1 1.0 7 6 1 3.0
1 22.0 4 1.0 1 2.0 5.0 2.0 1 5.0 2 ... 1.0 1.0 2.0 1 1 1.0 7 7 1 6.0
2 19.0 5 2.0 3 4.0 2.0 1.0 1 3.0 5 ... 2.0 1.0 2.0 1 1 1.0 7 7 4 7.0
3 17.0 4 3.0 1 5.0 1.0 2.0 1 7.0 5 ... 1.0 2.0 2.0 3 1 5.0 6 7 2 4.0
4 23.0 4 6.0 2 3.0 6.0 2.0 1 2.0 5 ... 5.0 1.0 4.0 1 1 1.0 6 7 4 5.0

5 rows × 121 columns


Mettre les noms des colonnes dans une variable


```python variables = data.columns ```

Créer un nouveau tableau de données


```python new_data = pd.DataFrame() ```

Pour chaque colonne, mettre dans p1 les valeurs paires et dans p2 les valeurs p2. Donner un index identique pour p1 et p2. Ajouter les deux colonnes à la suite dans le tableau de données


```python for i in variables:

   p1 = data[i].iloc[::2]
   p1.index = range(1,len(p1)+1)
   
   p2 = data[i].iloc[1::2]
   p2.index = range(1,len(p2)+1)
   v = i
   v1 = i + '_p1'
   v2 = i + '_p2'
   
   new_data[v1] = p1
   new_data[v2] = p2

```


```python new_data.head() ```



<style scoped>

   .dataframe tbody tr th:only-of-type {
       vertical-align: middle;
   }
   .dataframe tbody tr th {
       vertical-align: top;
   }
   .dataframe thead th {
       text-align: right;
   }

</style>

<thead> </thead> <tbody> </tbody>
Score Raven_p1 Score Raven_p2 Activation_soi_p1 Activation_soi_p2 Anxiété_soi_p1 Anxiété_soi_p2 Colère_soi_p1 Colère_soi_p2 Contrôle_soi_p1 Contrôle_soi_p2 ... Mon partenaire se comportait comme s'il était plus fort que moi_p1 Mon partenaire se comportait comme s'il était plus fort que moi_p2 Mon partenaire se montrait aimable envers moi_p1 Mon partenaire se montrait aimable envers moi_p2 Mon partenaire se montrait autant intéressé par la construction d'une bonne entente entre nous que par la résolution de la tâche_p1 Mon partenaire se montrait autant intéressé par la construction d'une bonne entente entre nous que par la résolution de la tâche_p2 Mon partenaire se montrait tendu et\ou agacé_p1 Mon partenaire se montrait tendu et\ou agacé_p2 Mon partenaire voulait rester coller à l'objectif principal de la tâche_p1 Mon partenaire voulait rester coller à l'objectif principal de la tâche_p2
1 20.0 22.0 4 4 1.0 1.0 3 1 2.0 2.0 ... 1.0 1.0 7 7 6 7 1 1 3.0 6.0
2 19.0 17.0 5 4 2.0 3.0 3 1 4.0 5.0 ... 1.0 5.0 7 6 7 7 4 2 7.0 4.0
3 23.0 21.0 4 4 6.0 4.0 2 5 3.0 3.0 ... 1.0 1.0 6 7 7 7 4 1 5.0 7.0
4 21.0 21.0 4 4 3.0 3.0 2 3 5.0 NaN ... 5.0 1.0 7 6 6 7 1 2 6.0 6.0
5 23.0 22.0 4 4 1.0 2.0 1 1 4.0 2.0 ... 4.0 2.0 7 6 7 7 1 2 5.0 6.0

5 rows × 242 columns


Exporter le fichier .csv restructuré


```python new_data.to_csv('out.csv',sep=';') ```