Restructurer un tableau de données dyadiques
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)
- Code
```python
- !/usr/bin/env python
- -*- 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=';')
```