Dataframe OK.

parent ea7dd593
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 11, "execution_count": 42,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
...@@ -25,9 +25,7 @@ ...@@ -25,9 +25,7 @@
"data_url = \"http://dramacode.github.io/markdown/moliere_avare.txt\"\n", "data_url = \"http://dramacode.github.io/markdown/moliere_avare.txt\"\n",
"data_file = \"moliere_avare.txt\"\n", "data_file = \"moliere_avare.txt\"\n",
"if not os.path.exists(data_file):\n", "if not os.path.exists(data_file):\n",
" urllib.request.urlretrieve(data_url, data_file)\n", " urllib.request.urlretrieve(data_url, data_file) "
"text=open(data_file,'r')\n",
"#text.readlines() "
] ]
}, },
{ {
...@@ -39,19 +37,258 @@ ...@@ -39,19 +37,258 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 10, "execution_count": 43,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"import pandas as pd" "import pandas as pd"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Je récupère le nom des personnages: "
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [],
"source": [
"text=open(data_file,'r')\n",
"Lines = text.readlines()\n"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['VALÈRE',\n",
" 'ÉLISE',\n",
" 'CLÉANTE',\n",
" 'HARPAGON',\n",
" 'LA FLÈCHE',\n",
" 'MAÎTRE SIMON',\n",
" 'FROSINE',\n",
" 'MAÎTRE JACQUES',\n",
" 'LA MERLUCHE',\n",
" 'BRINDAVOINE',\n",
" 'MARIANE',\n",
" 'LE COMMISSAIRE',\n",
" 'ANSELME']"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Perso = []\n",
"for l in Lines:\n",
" if l[0:4]==' ':\n",
" name=l[4:].split('.')[0].split('*')[0].split(',')[0]\n",
" if name not in Perso:\n",
" Perso.append(name)\n",
" if name[-1]==' ' : Perso.remove(name)\n",
"Perso "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Je récupère les actes et les scènes:"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Premier_Première',\n",
" 'Premier_II',\n",
" 'Premier_III',\n",
" 'Premier_IV',\n",
" 'Premier_V',\n",
" 'II_Première',\n",
" 'II_II',\n",
" 'II_III',\n",
" 'II_IV',\n",
" 'II_V',\n",
" 'III_Première',\n",
" 'III_II',\n",
" 'III_III',\n",
" 'III_IV',\n",
" 'III_V',\n",
" 'III_VI',\n",
" 'III_VII',\n",
" 'III_VIII',\n",
" 'III_IX',\n",
" 'IV_Première',\n",
" 'IV_II',\n",
" 'IV_III',\n",
" 'IV_IV',\n",
" 'IV_V',\n",
" 'IV_VI',\n",
" 'IV_VII',\n",
" 'V_Première',\n",
" 'V_II',\n",
" 'V_III',\n",
" 'V_IV',\n",
" 'V_V',\n",
" 'V_VI']"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Scene=''\n",
"Scenes=[]\n",
"for l in Lines:\n",
" if l[0:2]=='##':\n",
" if l[2]!='#':\n",
" Acte=l.split(' ')[2].split('.')[0]\n",
" else : \n",
" Scene=Acte+'_'+l.split(' ')[2].split('.')[0]\n",
" Scenes.append(Scene)\n",
" #elif Scene!='':\n",
" #print(l)\n",
" \n",
"Scenes"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [],
"source": [
"df=pd.DataFrame(index=Perso, columns=Scenes)"
]
},
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": 89,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [] "source": []
},
{
"cell_type": "code",
"execution_count": 165,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"[\"Hé quoi, charmante Élise, vous devenez mélancolique, après les obligeantes assurances que vous avez eu la bonté de me donner de votre foi ?Je vous vois soupirer, hélas, au milieu de ma joie !Est-ce du regret, dites-moi, de m'avoir fait heureux ? et vous repentez-vous de cet engagement où mes feux ont pu vous contraindre ?\",\n",
" 'Hé que pouvez-vous craindre, Élise, dans les bontés que vous avez pour moi ?',\n",
" 'Ah ! ne me faites pas ce tort, de juger de moi par les autres.Soupçonnez-moi de tout, Élise, plutôt que de manquer à ce que je vous dois.Je vous aime trop pour cela\\xa0; et mon amour pour vous, durera autant que ma vie.',\n",
" \"Puisque les seules actions font connaître ce que nous sommes\\xa0; attendez donc au moins à juger de mon cœur par elles, et ne me cherchez point des crimes dans les injustes craintes d'une fâcheuse prévoyance. Ne m'assassinez point, je vous prie, par les sensibles coups d'un soupçon outrageux\\xa0; et donnez-moi le temps de vous convaincre, par mille et mille preuves, de l'honnêteté de mes feux.\",\n",
" 'Mais pourquoi cette inquiétude ?',\n",
" \"De tout ce que vous avez dit, ce n'est que par mon seul amour que je prétends auprès de vous mériter quelque chose ; et quant aux scrupules que vous avez, votre Père, lui-même, ne prend que trop de soin de vous justifier à tout le monde ; et l'excès de son avarice, et la manière austère dont il vit avec ses Enfants, pourraient autoriser des choses plus étranges. Pardonnez-moi, charmante Élise, si j'en parle ainsi devant vous.Vous savez que sur ce chapitre on n'en peut pas dire de bien. Mais enfin, si je puis, comme je l'espère, retrouver mes Parents, nous n'aurons pas beaucoup de peine à nous le rendre favorable. J'en attends des nouvelles avec impatience, et j'en irai chercher moi-même, si elles tardent à venir.\",\n",
" \"Vous voyez comme je m'y prends, et les adroites complaisances qu'il m'a fallu mettre en usage, pour m'introduire à son service ; sous quel masque de sympathie, et de rapports de sentiments, je me déguise, pour lui plaire, et quel personnage je joue tous les jours avec lui, afin d'acquérir sa tendresse. J'y fais des progrès admirables ; et j'éprouve que pour gagner les Hommes, il n'est point de meilleure voie, que de se parer à leurs yeux de leurs inclinations ; que de donner dans leurs maximes, encenser leurs défauts, et applaudir à ce qu'ils font. On n'a que faire d'avoir peur de trop charger la complaisance ; et la manière dont on les joue, a beau être visible, les plus fins toujours sont de grandes dupes du côté de la flatterie ; et il n'y a rien de si impertinent, et de si ridicule, qu'on ne fasse avaler, lorsqu'on l'assaisonne en louange.La sincérité souffre un peu au métier que je fais : mais quand on a besoin des Hommes, il faut bien s'ajuster à eux ; et puisqu'on ne saurait les gagner que par là, ce n'est pas la faute de ceux qui flattent, mais de ceux qui veulent être flattés.\",\n",
" \"On ne peut pas ménager l'un et l'autre ; et l'esprit du Père, et celui du Fils, sont des choses si opposées, qu'il est difficile d'accommoder ces deux confidences ensemble. Mais vous, de votre part, agissez auprès de votre Frère, et servez-vous de l'amitié qui est entre vous deux, pour le jeter dans nos intérêts. Il vient.Je me retire.Prenez ce temps pour lui parler ; et ne lui découvrez de notre affaire, que ce que vous jugerez à propos.\"]"
]
},
"execution_count": 165,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df=pd.DataFrame()\n",
"Scene=''\n",
"for l in Lines:\n",
" if l[0:2]=='##':\n",
" if l[2]!='#':\n",
" Acte=l.split(' ')[2].split('.')[0]\n",
" else : \n",
" Scene=Acte+'_'+l.split(' ')[2].split('.')[0]\n",
" new_row = pd.Series(data={}, name=Scene)\n",
" #append row to the dataframe\n",
" df = df.append(new_row, ignore_index=False)\n",
" Name=''\n",
" elif l[0:4]==' ':\n",
" Name=l[4:].split('.')[0].split('*')[0].split(',')[0]\n",
" if Name[-1]==' ': \n",
" Name=Name[:-1]\n",
" if Name not in df.columns: \n",
" df[Name]=None\n",
" if isinstance(df[Name][Scene],list)==False: df[Name][Scene]=[] \n",
" \n",
" elif Scene!='' and Name!='' and l[0] != '\\n': \n",
" df[Name][Scene].append(l.split('\\n')[0])\n",
" \n",
" \n",
"df['VALÈRE']['Premier_Première']\n"
]
},
{
"cell_type": "code",
"execution_count": 163,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"8\n"
]
}
],
"source": [
"print(len(df['VALÈRE']['Premier_Première']))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il y a 8 répliques de Valère dans Acte I scène 1. "
]
},
{
"cell_type": "code",
"execution_count": 168,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"56"
]
},
"execution_count": 168,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(df['VALÈRE']['Premier_Première'][0].split(' '))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il y a 56 mots dans la première réplique (en coupant simplement aux espaces). "
]
} }
], ],
"metadata": { "metadata": {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment