Skip to content

Commit 36a2e04

Browse files
committed
Fix date of swift from wikipedia.
1 parent cedebad commit 36a2e04

File tree

1 file changed

+107
-37
lines changed

1 file changed

+107
-37
lines changed

intro/sesion0.ipynb

Lines changed: 107 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,19 @@
5252
},
5353
{
5454
"cell_type": "markdown",
55-
"metadata": {},
55+
"metadata": {
56+
"id": "gUKmEEKuBO6x"
57+
},
5658
"source": [
5759
"Actualizamos los paquetes necesarios. En general esto no hace falta en Google Colab, pero sí en Jupyter Notebook."
5860
]
5961
},
6062
{
6163
"cell_type": "code",
6264
"execution_count": null,
63-
"metadata": {},
65+
"metadata": {
66+
"id": "PbeHGejDBO6x"
67+
},
6468
"outputs": [],
6569
"source": [
6670
"!sudo apt-get update -qq"
@@ -69,7 +73,9 @@
6973
{
7074
"cell_type": "code",
7175
"execution_count": null,
72-
"metadata": {},
76+
"metadata": {
77+
"id": "40eR4mfVBO6y"
78+
},
7379
"outputs": [],
7480
"source": [
7581
"!sudo apt-get install -y p7zip"
@@ -78,7 +84,9 @@
7884
{
7985
"cell_type": "code",
8086
"execution_count": null,
81-
"metadata": {},
87+
"metadata": {
88+
"id": "DSBkYju1BO6z"
89+
},
8290
"outputs": [],
8391
"source": [
8492
"RunningInCOLAB = 'google.colab' in str(get_ipython()) if hasattr(__builtins__,'__IPYTHON__') else False"
@@ -803,7 +811,7 @@
803811
},
804812
"outputs": [],
805813
"source": [
806-
"firstdate = dfwiki[0][1][5]\n",
814+
"firstdate = dfwiki[0][1][4]\n",
807815
"firstdate"
808816
]
809817
},
@@ -999,7 +1007,9 @@
9991007
},
10001008
{
10011009
"cell_type": "markdown",
1002-
"metadata": {},
1010+
"metadata": {
1011+
"id": "TbOKByplBO7Q"
1012+
},
10031013
"source": [
10041014
"## Datos de Stackoverflow\n",
10051015
"\n",
@@ -1012,22 +1022,28 @@
10121022
},
10131023
{
10141024
"cell_type": "markdown",
1015-
"metadata": {},
1025+
"metadata": {
1026+
"id": "ToYeCqMNBO7R"
1027+
},
10161028
"source": [
10171029
"## Descarga de los datos"
10181030
]
10191031
},
10201032
{
10211033
"cell_type": "markdown",
1022-
"metadata": {},
1034+
"metadata": {
1035+
"id": "JQvTT2bOBO7R"
1036+
},
10231037
"source": [
10241038
"En este caso los datos están disponibles en un repositorio git. Se pueden descargar también de la Web, pero se van actualizando. Los descargamos del repositorio git para que todos tengáis los mismos."
10251039
]
10261040
},
10271041
{
10281042
"cell_type": "code",
10291043
"execution_count": null,
1030-
"metadata": {},
1044+
"metadata": {
1045+
"id": "YPXQ7PPZBO7R"
1046+
},
10311047
"outputs": [],
10321048
"source": [
10331049
"!wget https://github.com/dsevilla/bd2-data/raw/main/es.stackoverflow/es.stackoverflow.7z.001\n",
@@ -1038,7 +1054,9 @@
10381054
{
10391055
"cell_type": "code",
10401056
"execution_count": null,
1041-
"metadata": {},
1057+
"metadata": {
1058+
"id": "nA6Z9zk9BO7S"
1059+
},
10421060
"outputs": [],
10431061
"source": [
10441062
"!ls -lh es.stackoverflow.7z*"
@@ -1047,7 +1065,9 @@
10471065
{
10481066
"cell_type": "code",
10491067
"execution_count": null,
1050-
"metadata": {},
1068+
"metadata": {
1069+
"id": "wp81WjeVBO7S"
1070+
},
10511071
"outputs": [],
10521072
"source": [
10531073
"!7zr x es.stackoverflow.7z.001"
@@ -1056,38 +1076,48 @@
10561076
{
10571077
"cell_type": "code",
10581078
"execution_count": null,
1059-
"metadata": {},
1079+
"metadata": {
1080+
"id": "yXXtEQUTBO7T"
1081+
},
10601082
"outputs": [],
10611083
"source": [
10621084
"!ls -lh *.xml"
10631085
]
10641086
},
10651087
{
10661088
"cell_type": "markdown",
1067-
"metadata": {},
1089+
"metadata": {
1090+
"id": "54tTnOP8BO7T"
1091+
},
10681092
"source": [
10691093
"## Inspección y procesado"
10701094
]
10711095
},
10721096
{
10731097
"cell_type": "markdown",
1074-
"metadata": {},
1098+
"metadata": {
1099+
"id": "Gf4Gvz1sBO7T"
1100+
},
10751101
"source": [
10761102
"Podemos inspeccionar los ficheros `.xml` para ver su contenido. Son XML, sí, pero ¿con qué formato?"
10771103
]
10781104
},
10791105
{
10801106
"cell_type": "code",
10811107
"execution_count": null,
1082-
"metadata": {},
1108+
"metadata": {
1109+
"id": "9gnbcXYIBO7U"
1110+
},
10831111
"outputs": [],
10841112
"source": [
10851113
"!head Posts.xml"
10861114
]
10871115
},
10881116
{
10891117
"cell_type": "markdown",
1090-
"metadata": {},
1118+
"metadata": {
1119+
"id": "ApKHu1ZgBO7U"
1120+
},
10911121
"source": [
10921122
"Aunque se puede procesar el formato XML, lo que podemos ver es que cada entrada es exactamente una línea que comienza por \"`<row`\", y que contiene un conjunto de atributos en formato \"`atributo=\"valor\"`\". Si lo comprobamos, incluso no existirá ninguna comilla doble **dentro** de otra comilla doble, así que podemos extraer esos pares de forma facil.\n",
10931123
"\n",
@@ -1099,7 +1129,9 @@
10991129
{
11001130
"cell_type": "code",
11011131
"execution_count": null,
1102-
"metadata": {},
1132+
"metadata": {
1133+
"id": "ZN4NYtRKBO7V"
1134+
},
11031135
"outputs": [],
11041136
"source": [
11051137
"import re\n",
@@ -1121,7 +1153,9 @@
11211153
{
11221154
"cell_type": "code",
11231155
"execution_count": null,
1124-
"metadata": {},
1156+
"metadata": {
1157+
"id": "K_Pcy0heBO7W"
1158+
},
11251159
"outputs": [],
11261160
"source": [
11271161
"first_row = next(generate_elements_from_lines(\"Posts.xml\"))"
@@ -1130,23 +1164,29 @@
11301164
{
11311165
"cell_type": "code",
11321166
"execution_count": null,
1133-
"metadata": {},
1167+
"metadata": {
1168+
"id": "TayEqKvOBO7X"
1169+
},
11341170
"outputs": [],
11351171
"source": [
11361172
"first_row.keys()"
11371173
]
11381174
},
11391175
{
11401176
"cell_type": "markdown",
1141-
"metadata": {},
1177+
"metadata": {
1178+
"id": "DZ6mVx0FBO7X"
1179+
},
11421180
"source": [
11431181
"Hay que extraer el conjunto de atributos para saber qué columnas tendrá nuestra tabla/CSV o archivo JSON. Recuérdese que las dos primeras filas del archivo XML tenían diferentes atributos. ¿Cómo se haría esto?"
11441182
]
11451183
},
11461184
{
11471185
"cell_type": "code",
11481186
"execution_count": null,
1149-
"metadata": {},
1187+
"metadata": {
1188+
"id": "5Wo1jPDQBO7Y"
1189+
},
11501190
"outputs": [],
11511191
"source": [
11521192
"from typing import Iterator\n",
@@ -1162,31 +1202,39 @@
11621202
},
11631203
{
11641204
"cell_type": "markdown",
1165-
"metadata": {},
1205+
"metadata": {
1206+
"id": "yHBXA4dfBO7Y"
1207+
},
11661208
"source": [
11671209
"El conjunto de atributos es pues:"
11681210
]
11691211
},
11701212
{
11711213
"cell_type": "code",
11721214
"execution_count": null,
1173-
"metadata": {},
1215+
"metadata": {
1216+
"id": "nUUkPSMyBO7Y"
1217+
},
11741218
"outputs": [],
11751219
"source": [
11761220
"all_attrs"
11771221
]
11781222
},
11791223
{
11801224
"cell_type": "markdown",
1181-
"metadata": {},
1225+
"metadata": {
1226+
"id": "BwLQrOr2BO7Y"
1227+
},
11821228
"source": [
11831229
"Como sabemos que el atributo `Id` va a ser la clave primaria, lo ponemos al principio. Además, generamos una lista, no un conjunto, para que el orden sea conocido."
11841230
]
11851231
},
11861232
{
11871233
"cell_type": "code",
11881234
"execution_count": null,
1189-
"metadata": {},
1235+
"metadata": {
1236+
"id": "zPjVuHr5BO7Z"
1237+
},
11901238
"outputs": [],
11911239
"source": [
11921240
"all_attrs.remove('Id')\n",
@@ -1197,14 +1245,18 @@
11971245
},
11981246
{
11991247
"cell_type": "markdown",
1200-
"metadata": {},
1248+
"metadata": {
1249+
"id": "rjFN1ERBBO7Z"
1250+
},
12011251
"source": [
12021252
"## Escritura del formato CSV"
12031253
]
12041254
},
12051255
{
12061256
"cell_type": "markdown",
1207-
"metadata": {},
1257+
"metadata": {
1258+
"id": "lRiaGxTKBO7Z"
1259+
},
12081260
"source": [
12091261
"El formato CSV está especificado en el estándar RFC 4180. https://www.ietf.org/rfc/rfc4180.txt. En general se puede utilizar la biblioteca `csv` de Python 3 y vamos a exportar una línea de cabecera con todos los campos. https://docs.python.org/3/library/csv.html.\n",
12101262
"\n",
@@ -1214,7 +1266,9 @@
12141266
{
12151267
"cell_type": "code",
12161268
"execution_count": null,
1217-
"metadata": {},
1269+
"metadata": {
1270+
"id": "eIzLGoQzBO7Z"
1271+
},
12181272
"outputs": [],
12191273
"source": [
12201274
"import csv\n",
@@ -1235,7 +1289,9 @@
12351289
{
12361290
"cell_type": "code",
12371291
"execution_count": null,
1238-
"metadata": {},
1292+
"metadata": {
1293+
"id": "YP974wv1BO7a"
1294+
},
12391295
"outputs": [],
12401296
"source": [
12411297
"write_csv('Posts.csv', all_attrs, generate_elements_from_lines('Posts.xml'))"
@@ -1244,29 +1300,37 @@
12441300
{
12451301
"cell_type": "code",
12461302
"execution_count": null,
1247-
"metadata": {},
1303+
"metadata": {
1304+
"id": "dZf_dANbBO7a"
1305+
},
12481306
"outputs": [],
12491307
"source": [
12501308
"!head Posts.csv"
12511309
]
12521310
},
12531311
{
12541312
"cell_type": "markdown",
1255-
"metadata": {},
1313+
"metadata": {
1314+
"id": "nSwgPLttBO7a"
1315+
},
12561316
"source": [
12571317
"## Uso de Parquet"
12581318
]
12591319
},
12601320
{
12611321
"cell_type": "markdown",
1262-
"metadata": {},
1322+
"metadata": {
1323+
"id": "3lod4l2IBO7b"
1324+
},
12631325
"source": [
12641326
"![Parquet](https://upload.wikimedia.org/wikipedia/commons/4/47/Apache_Parquet_logo.svg)\n"
12651327
]
12661328
},
12671329
{
12681330
"cell_type": "markdown",
1269-
"metadata": {},
1331+
"metadata": {
1332+
"id": "qZp2QNDjBO7b"
1333+
},
12701334
"source": [
12711335
"El formato Parquet (https://parquet.apache.org) se ha popularizado recientemente con el uso de fuentes de datos en Internet. En general supone una mejora en todos los aspectos con respecto a CSV y en otros con respecto a JSON y JSON lines.\n",
12721336
"\n",
@@ -1286,7 +1350,9 @@
12861350
{
12871351
"cell_type": "code",
12881352
"execution_count": null,
1289-
"metadata": {},
1353+
"metadata": {
1354+
"id": "33e2DF_XBO7c"
1355+
},
12901356
"outputs": [],
12911357
"source": [
12921358
"%pip install pyarrow"
@@ -1295,7 +1361,9 @@
12951361
{
12961362
"cell_type": "code",
12971363
"execution_count": null,
1298-
"metadata": {},
1364+
"metadata": {
1365+
"id": "zYtTM0kzBO7c"
1366+
},
12991367
"outputs": [],
13001368
"source": [
13011369
"# Write the df dataframe to parquet file\n",
@@ -1306,7 +1374,9 @@
13061374
{
13071375
"cell_type": "code",
13081376
"execution_count": null,
1309-
"metadata": {},
1377+
"metadata": {
1378+
"id": "u3xgJ8olBO7c"
1379+
},
13101380
"outputs": [],
13111381
"source": [
13121382
"!ls -lh Posts.*"
@@ -1338,4 +1408,4 @@
13381408
},
13391409
"nbformat": 4,
13401410
"nbformat_minor": 0
1341-
}
1411+
}

0 commit comments

Comments
 (0)