From c83911810c227ead86f3f9435d98d9456c90c5ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20R=C3=B6ggla?= Date: Mon, 20 Jul 2020 12:02:37 +0200 Subject: [PATCH] Some analysis --- .idea/misc.xml | 3 + comparenew-and-old-output.ipynb | 1922 ++++++------------ test/dataextractors/test_index.py | 10 +- test/getrecords/test_session.py | 1 + travelogues_extraction/analytics/__init__.py | 0 travelogues_extraction/analytics/compare.py | 13 + travelogues_extraction/getrecords/session.py | 18 +- 7 files changed, 681 insertions(+), 1286 deletions(-) create mode 100644 travelogues_extraction/analytics/__init__.py create mode 100644 travelogues_extraction/analytics/compare.py diff --git a/.idea/misc.xml b/.idea/misc.xml index ff7b6a3..8da0263 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,7 @@ + + \ No newline at end of file diff --git a/comparenew-and-old-output.ipynb b/comparenew-and-old-output.ipynb index a784f69..840a0c3 100644 --- a/comparenew-and-old-output.ipynb +++ b/comparenew-and-old-output.ipynb @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -36,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -373,7 +373,7 @@ "[5 rows x 48 columns]" ] }, - "execution_count": 9, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -384,7 +384,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -393,7 +393,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -682,7 +682,7 @@ "[5 rows x 48 columns]" ] }, - "execution_count": 25, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -700,7 +700,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -717,7 +717,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -726,7 +726,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -735,7 +735,7 @@ "800" ] }, - "execution_count": 27, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -746,1327 +746,701 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
SystemnummerMMS-IDVolltextBarcodeVerfasser ; GND-IDWerktitelReihentitel ; BandzählungHaupttitel ; Titelzusatz ; VerantwortlichkeitsangabeBandzählung ; Titel des BandesAusgabe...Widmungsempfänger ; GND-IDArt des InhaltsInhaltWerke in RelationSchlagworteMarkerZusammenstellungSignaturStandortVD17
Systemnummer
\n", - "

0 rows × 48 columns

\n", - "
" - ], "text/plain": [ - "Empty DataFrame\n", - "Columns: [Systemnummer, MMS-ID, Volltext, Barcode, Verfasser ; GND-ID, Werktitel, Reihentitel ; Bandzählung, Haupttitel ; Titelzusatz ; Verantwortlichkeitsangabe, Bandzählung ; Titel des Bandes, Ausgabe, Verlagsort, Verlagsort normiert ; GND-ID, Druckort normiert ; GND-ID, Verleger und Drucker, Verleger normiert ; GND-ID, Drucker ; GND-ID, Erscheinungsjahr, Erscheinungsjahr Sortierform, Kollation, Illustrationen, Anzahl Illustrationen, Anzahl Karten, Format, Anm. zu Illustrationen, Bibliografie, Anmerkungen, Anm. zu Kollation, Sprache, Originalsprache, Bemerkung zur Sprache, Standardnummer, Weitere Verfasser ; GND-ID, Herausgeber ; GND-ID, Übersetzer ; GND-ID, Beiträger ; GND-ID, Weitere Beteiligte ; GND-ID, Illustratoren ; GND-ID, Widmender ; GND-ID, Widmungsempfänger ; GND-ID, Art des Inhalts, Inhalt, Werke in Relation, Schlagworte, Marker, Zusammenstellung, Signatur, Standort, VD17]\n", - "Index: []\n", - "\n", - "[0 rows x 48 columns]" + "0" ] }, - "execution_count": 29, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "old[old.Systemnummer.isna()]" + "old.Systemnummer.isna().sum()" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "text/plain": [ + "37" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new.Systemnummer.isna().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "800" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.sum(new.index == old.index)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compare only those, that have been scraped in new" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "new_worked = new[new.Systemnummer.isin(old.Systemnummer)]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "old_comparision = old[old.Systemnummer.isin(new_worked.Systemnummer)]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "assert new_worked.shape == old_comparision.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(763, 48)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_worked.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "assert np.sum(new_worked.index == old_comparision.index) == new_worked.shape[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Actual data" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Can only compare identically-labeled DataFrame objects", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnew_worked\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mold_comparision\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/Documents/onb-homeoffice-local/TraveloguesExtraktion/venv/lib/python3.7/site-packages/pandas/core/ops/__init__.py\u001b[0m in \u001b[0;36mf\u001b[0;34m(self, other)\u001b[0m\n\u001b[1;32m 837\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_indexed_same\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mother\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 838\u001b[0m raise ValueError(\n\u001b[0;32m--> 839\u001b[0;31m \u001b[0;34m\"Can only compare identically-labeled DataFrame objects\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 840\u001b[0m )\n\u001b[1;32m 841\u001b[0m \u001b[0mnew_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdispatch_to_series\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mother\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mop\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstr_rep\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: Can only compare identically-labeled DataFrame objects" + ] + } + ], + "source": [ + "new_worked == old_comparision" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "47" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.sum(new_worked.columns == old_comparision.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(48,)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_worked.columns.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(48,)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "old_comparision.columns.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Verfasser ; GND-ID'], dtype='object')" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "old_comparision.columns.difference(new_worked.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['VerfasserGND ; GND-ID'], dtype='object')" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_worked.columns.difference(old_comparision.columns)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ups" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "new_worked = new_worked.rename(columns={'VerfasserGND ; GND-ID': 'Verfasser ; GND-ID'})" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index([], dtype='object')" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "old_comparision.columns.difference(new_worked.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index([], dtype='object')" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_worked.columns.difference(old_comparision.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "comparision = new_worked == old_comparision" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "not_the_same = {\n", + " column: comparision.shape[0] - n\n", + " for column, n\n", + " in comparision.sum().iteritems()\n", + " if comparision.shape[0] > n\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'MMS-ID': 479,\n", + " 'Volltext': 44,\n", + " 'Barcode': 44,\n", + " 'Verfasser ; GND-ID': 754,\n", + " 'Werktitel': 640,\n", + " 'Reihentitel ; Bandzählung': 763,\n", + " 'Haupttitel ; Titelzusatz ; Verantwortlichkeitsangabe': 677,\n", + " 'Bandzählung ; Titel des Bandes': 474,\n", + " 'Ausgabe': 725,\n", + " 'Verlagsort': 3,\n", + " 'Verlagsort normiert ; GND-ID': 762,\n", + " 'Druckort normiert ; GND-ID': 763,\n", + " 'Verleger und Drucker': 120,\n", + " 'Verleger normiert ; GND-ID': 755,\n", + " 'Drucker ; GND-ID': 763,\n", + " 'Erscheinungsjahr': 8,\n", + " 'Kollation': 3,\n", + " 'Illustrationen': 292,\n", + " 'Anzahl Illustrationen': 366,\n", + " 'Anzahl Karten': 578,\n", + " 'Format': 2,\n", + " 'Anm. zu Illustrationen': 17,\n", + " 'Bibliografie': 22,\n", + " 'Anmerkungen': 316,\n", + " 'Anm. zu Kollation': 690,\n", + " 'Sprache': 2,\n", + " 'Originalsprache': 407,\n", + " 'Bemerkung zur Sprache': 382,\n", + " 'Standardnummer': 506,\n", + " 'Weitere Verfasser ; GND-ID': 757,\n", + " 'Herausgeber ; GND-ID': 749,\n", + " 'Übersetzer ; GND-ID': 751,\n", + " 'Beiträger ; GND-ID': 753,\n", + " 'Weitere Beteiligte ; GND-ID': 763,\n", + " 'Illustratoren ; GND-ID': 736,\n", + " 'Widmender ; GND-ID': 761,\n", + " 'Widmungsempfänger ; GND-ID': 752,\n", + " 'Art des Inhalts': 283,\n", + " 'Inhalt': 748,\n", + " 'Werke in Relation': 763,\n", + " 'Schlagworte': 754,\n", + " 'Marker': 574,\n", + " 'Zusammenstellung': 692,\n", + " 'Signatur': 763,\n", + " 'Standort': 249,\n", + " 'VD17': 500}" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "not_the_same" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# mms-id" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "AC03114611 9.900045e+17\n", + "AC03826205 9.900059e+17\n", + "AC09792500 9.900295e+17\n", + "AC09836279 9.900299e+17\n", + "AC07705435 9.900165e+17\n", + "Name: MMS-ID, dtype: float64" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_worked['MMS-ID'].head()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "new_worked['MMS-ID'] = new_worked['MMS-ID'].astype(str)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "AC03114611 990004456580603136\n", + "AC03826205 990005906350603264\n", + "AC09792500 990029473670603264\n", + "AC09836279 990029921640603136\n", + "AC07705435 990016481420603136\n", + "Name: MMS-ID, dtype: object" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_worked['MMS-ID'].head()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Systemnummer\n", + "AC03114611 990004456580603338\n", + "AC03826205 990005906350603338\n", + "AC09792500 990029473670603338\n", + "AC09836279 990029921640603338\n", + "AC07705435 990016481420603338\n", + "Name: MMS-ID, dtype: int64" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "old_comparision['MMS-ID'].head()" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/phylogram/Documents/onb-homeoffice-local/TraveloguesExtraktion/venv/lib/python3.7/site-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " \"\"\"Entry point for launching an IPython kernel.\n" + ] + } + ], + "source": [ + "old_comparision['MMS-ID'] = old_comparision['MMS-ID'].astype(str)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "oida" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Systemnummer\n", + "AC03114611 990004456580603338\n", + "AC03826205 990005906350603338\n", + "AC09792500 990029473670603338\n", + "AC09836279 990029921640603338\n", + "AC07705435 990016481420603338\n", + "Name: MMS-ID, dtype: object" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "old_comparision['MMS-ID'].head()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "def compare(column: str) -> pd.DataFrame:\n", + " old_column = old_comparision[column]\n", + " new_column = new_worked[column]\n", + " old_diff = old_column[old_column != new_column]\n", + " new_diff = new_column[old_column != new_column]\n", + " return pd.DataFrame({\n", + " 'old_value': old_diff,\n", + " 'new_value': new_diff,\n", + " }, index=old_diff.index)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "mms_different = compare('MMS-ID')" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "
SystemnummerMMS-IDVolltextBarcodeVerfasserGND ; GND-IDWerktitelReihentitel ; BandzählungHaupttitel ; Titelzusatz ; VerantwortlichkeitsangabeBandzählung ; Titel des BandesAusgabe...Widmungsempfänger ; GND-IDArt des InhaltsInhaltWerke in RelationSchlagworteMarkerZusammenstellungSignaturStandortVD17
AC09771400NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09787927NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09792016NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09792044NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09792047NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09792499NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09806083NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09954400NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09960983NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09996631NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC10011007NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC10011543NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC10443086NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC13781340NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC15228519NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC07921482NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC08512822NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC15245305NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC15245267NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC15245255NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC10457848NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09626715NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09626717NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09627140NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", "
old_valuenew_value
AC09627175NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNSystemnummer
AC09627176NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNAC03114611990004456580603338990004456580603136
AC09627177NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNAC03826205990005906350603338990005906350603264
AC10480538NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNAC09792500990029473670603338990029473670603264
AC09629087NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNAC09836279990029921640603338990029921640603136
AC09629088NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNAC07705435990016481420603338990016481420603136
AC08886350NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN......NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09633292NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
AC09635585NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNAC14487653990057677380603338990057677380603136
AC09636834NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNAC14494673990057713410603338990057713410603264
AC09636837NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNAC14494679990057713430603338990057713430603264
AC07152452NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNAC06335423990057719990603338990057719990603264
AC11450226NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNAC14499956990057728090603338990057728090603264
\n", - "

37 rows × 48 columns

\n", + "

479 rows × 2 columns

\n", "
" ], "text/plain": [ - " Systemnummer MMS-ID Volltext Barcode VerfasserGND ; GND-ID \\\n", - "AC09771400 NaN NaN NaN NaN NaN \n", - "AC09787927 NaN NaN NaN NaN NaN \n", - "AC09792016 NaN NaN NaN NaN NaN \n", - "AC09792044 NaN NaN NaN NaN NaN \n", - "AC09792047 NaN NaN NaN NaN NaN \n", - "AC09792499 NaN NaN NaN NaN NaN \n", - "AC09806083 NaN NaN NaN NaN NaN \n", - "AC09954400 NaN NaN NaN NaN NaN \n", - "AC09960983 NaN NaN NaN NaN NaN \n", - "AC09996631 NaN NaN NaN NaN NaN \n", - "AC10011007 NaN NaN NaN NaN NaN \n", - "AC10011543 NaN NaN NaN NaN NaN \n", - "AC10443086 NaN NaN NaN NaN NaN \n", - "AC13781340 NaN NaN NaN NaN NaN \n", - "AC15228519 NaN NaN NaN NaN NaN \n", - "AC07921482 NaN NaN NaN NaN NaN \n", - "AC08512822 NaN NaN NaN NaN NaN \n", - "AC15245305 NaN NaN NaN NaN NaN \n", - "AC15245267 NaN NaN NaN NaN NaN \n", - "AC15245255 NaN NaN NaN NaN NaN \n", - "AC10457848 NaN NaN NaN NaN NaN \n", - "AC09626715 NaN NaN NaN NaN NaN \n", - "AC09626717 NaN NaN NaN NaN NaN \n", - "AC09627140 NaN NaN NaN NaN NaN \n", - "AC09627175 NaN NaN NaN NaN NaN \n", - "AC09627176 NaN NaN NaN NaN NaN \n", - "AC09627177 NaN NaN NaN NaN NaN \n", - "AC10480538 NaN NaN NaN NaN NaN \n", - "AC09629087 NaN NaN NaN NaN NaN \n", - "AC09629088 NaN NaN NaN NaN NaN \n", - "AC08886350 NaN NaN NaN NaN NaN \n", - "AC09633292 NaN NaN NaN NaN NaN \n", - "AC09635585 NaN NaN NaN NaN NaN \n", - "AC09636834 NaN NaN NaN NaN NaN \n", - "AC09636837 NaN NaN NaN NaN NaN \n", - "AC07152452 NaN NaN NaN NaN NaN \n", - "AC11450226 NaN NaN NaN NaN NaN \n", - "\n", - " Werktitel Reihentitel ; Bandzählung \\\n", - "AC09771400 NaN NaN \n", - "AC09787927 NaN NaN \n", - "AC09792016 NaN NaN \n", - "AC09792044 NaN NaN \n", - "AC09792047 NaN NaN \n", - "AC09792499 NaN NaN \n", - "AC09806083 NaN NaN \n", - "AC09954400 NaN NaN \n", - "AC09960983 NaN NaN \n", - "AC09996631 NaN NaN \n", - "AC10011007 NaN NaN \n", - "AC10011543 NaN NaN \n", - "AC10443086 NaN NaN \n", - "AC13781340 NaN NaN \n", - "AC15228519 NaN NaN \n", - "AC07921482 NaN NaN \n", - "AC08512822 NaN NaN \n", - "AC15245305 NaN NaN \n", - "AC15245267 NaN NaN \n", - "AC15245255 NaN NaN \n", - "AC10457848 NaN NaN \n", - "AC09626715 NaN NaN \n", - "AC09626717 NaN NaN \n", - "AC09627140 NaN NaN \n", - "AC09627175 NaN NaN \n", - "AC09627176 NaN NaN \n", - "AC09627177 NaN NaN \n", - "AC10480538 NaN NaN \n", - "AC09629087 NaN NaN \n", - "AC09629088 NaN NaN \n", - "AC08886350 NaN NaN \n", - "AC09633292 NaN NaN \n", - "AC09635585 NaN NaN \n", - "AC09636834 NaN NaN \n", - "AC09636837 NaN NaN \n", - "AC07152452 NaN NaN \n", - "AC11450226 NaN NaN \n", - "\n", - " Haupttitel ; Titelzusatz ; Verantwortlichkeitsangabe \\\n", - "AC09771400 NaN \n", - "AC09787927 NaN \n", - "AC09792016 NaN \n", - "AC09792044 NaN \n", - "AC09792047 NaN \n", - "AC09792499 NaN \n", - "AC09806083 NaN \n", - "AC09954400 NaN \n", - "AC09960983 NaN \n", - "AC09996631 NaN \n", - "AC10011007 NaN \n", - "AC10011543 NaN \n", - "AC10443086 NaN \n", - "AC13781340 NaN \n", - "AC15228519 NaN \n", - "AC07921482 NaN \n", - "AC08512822 NaN \n", - "AC15245305 NaN \n", - "AC15245267 NaN \n", - "AC15245255 NaN \n", - "AC10457848 NaN \n", - "AC09626715 NaN \n", - "AC09626717 NaN \n", - "AC09627140 NaN \n", - "AC09627175 NaN \n", - "AC09627176 NaN \n", - "AC09627177 NaN \n", - "AC10480538 NaN \n", - "AC09629087 NaN \n", - "AC09629088 NaN \n", - "AC08886350 NaN \n", - "AC09633292 NaN \n", - "AC09635585 NaN \n", - "AC09636834 NaN \n", - "AC09636837 NaN \n", - "AC07152452 NaN \n", - "AC11450226 NaN \n", - "\n", - " Bandzählung ; Titel des Bandes Ausgabe ... \\\n", - "AC09771400 NaN NaN ... \n", - "AC09787927 NaN NaN ... \n", - "AC09792016 NaN NaN ... \n", - "AC09792044 NaN NaN ... \n", - "AC09792047 NaN NaN ... \n", - "AC09792499 NaN NaN ... \n", - "AC09806083 NaN NaN ... \n", - "AC09954400 NaN NaN ... \n", - "AC09960983 NaN NaN ... \n", - "AC09996631 NaN NaN ... \n", - "AC10011007 NaN NaN ... \n", - "AC10011543 NaN NaN ... \n", - "AC10443086 NaN NaN ... \n", - "AC13781340 NaN NaN ... \n", - "AC15228519 NaN NaN ... \n", - "AC07921482 NaN NaN ... \n", - "AC08512822 NaN NaN ... \n", - "AC15245305 NaN NaN ... \n", - "AC15245267 NaN NaN ... \n", - "AC15245255 NaN NaN ... \n", - "AC10457848 NaN NaN ... \n", - "AC09626715 NaN NaN ... \n", - "AC09626717 NaN NaN ... \n", - "AC09627140 NaN NaN ... \n", - "AC09627175 NaN NaN ... \n", - "AC09627176 NaN NaN ... \n", - "AC09627177 NaN NaN ... \n", - "AC10480538 NaN NaN ... \n", - "AC09629087 NaN NaN ... \n", - "AC09629088 NaN NaN ... \n", - "AC08886350 NaN NaN ... \n", - "AC09633292 NaN NaN ... \n", - "AC09635585 NaN NaN ... \n", - "AC09636834 NaN NaN ... \n", - "AC09636837 NaN NaN ... \n", - "AC07152452 NaN NaN ... \n", - "AC11450226 NaN NaN ... \n", - "\n", - " Widmungsempfänger ; GND-ID Art des Inhalts Inhalt \\\n", - "AC09771400 NaN NaN NaN \n", - "AC09787927 NaN NaN NaN \n", - "AC09792016 NaN NaN NaN \n", - "AC09792044 NaN NaN NaN \n", - "AC09792047 NaN NaN NaN \n", - "AC09792499 NaN NaN NaN \n", - "AC09806083 NaN NaN NaN \n", - "AC09954400 NaN NaN NaN \n", - "AC09960983 NaN NaN NaN \n", - "AC09996631 NaN NaN NaN \n", - "AC10011007 NaN NaN NaN \n", - "AC10011543 NaN NaN NaN \n", - "AC10443086 NaN NaN NaN \n", - "AC13781340 NaN NaN NaN \n", - "AC15228519 NaN NaN NaN \n", - "AC07921482 NaN NaN NaN \n", - "AC08512822 NaN NaN NaN \n", - "AC15245305 NaN NaN NaN \n", - "AC15245267 NaN NaN NaN \n", - "AC15245255 NaN NaN NaN \n", - "AC10457848 NaN NaN NaN \n", - "AC09626715 NaN NaN NaN \n", - "AC09626717 NaN NaN NaN \n", - "AC09627140 NaN NaN NaN \n", - "AC09627175 NaN NaN NaN \n", - "AC09627176 NaN NaN NaN \n", - "AC09627177 NaN NaN NaN \n", - "AC10480538 NaN NaN NaN \n", - "AC09629087 NaN NaN NaN \n", - "AC09629088 NaN NaN NaN \n", - "AC08886350 NaN NaN NaN \n", - "AC09633292 NaN NaN NaN \n", - "AC09635585 NaN NaN NaN \n", - "AC09636834 NaN NaN NaN \n", - "AC09636837 NaN NaN NaN \n", - "AC07152452 NaN NaN NaN \n", - "AC11450226 NaN NaN NaN \n", - "\n", - " Werke in Relation Schlagworte Marker Zusammenstellung Signatur \\\n", - "AC09771400 NaN NaN NaN NaN NaN \n", - "AC09787927 NaN NaN NaN NaN NaN \n", - "AC09792016 NaN NaN NaN NaN NaN \n", - "AC09792044 NaN NaN NaN NaN NaN \n", - "AC09792047 NaN NaN NaN NaN NaN \n", - "AC09792499 NaN NaN NaN NaN NaN \n", - "AC09806083 NaN NaN NaN NaN NaN \n", - "AC09954400 NaN NaN NaN NaN NaN \n", - "AC09960983 NaN NaN NaN NaN NaN \n", - "AC09996631 NaN NaN NaN NaN NaN \n", - "AC10011007 NaN NaN NaN NaN NaN \n", - "AC10011543 NaN NaN NaN NaN NaN \n", - "AC10443086 NaN NaN NaN NaN NaN \n", - "AC13781340 NaN NaN NaN NaN NaN \n", - "AC15228519 NaN NaN NaN NaN NaN \n", - "AC07921482 NaN NaN NaN NaN NaN \n", - "AC08512822 NaN NaN NaN NaN NaN \n", - "AC15245305 NaN NaN NaN NaN NaN \n", - "AC15245267 NaN NaN NaN NaN NaN \n", - "AC15245255 NaN NaN NaN NaN NaN \n", - "AC10457848 NaN NaN NaN NaN NaN \n", - "AC09626715 NaN NaN NaN NaN NaN \n", - "AC09626717 NaN NaN NaN NaN NaN \n", - "AC09627140 NaN NaN NaN NaN NaN \n", - "AC09627175 NaN NaN NaN NaN NaN \n", - "AC09627176 NaN NaN NaN NaN NaN \n", - "AC09627177 NaN NaN NaN NaN NaN \n", - "AC10480538 NaN NaN NaN NaN NaN \n", - "AC09629087 NaN NaN NaN NaN NaN \n", - "AC09629088 NaN NaN NaN NaN NaN \n", - "AC08886350 NaN NaN NaN NaN NaN \n", - "AC09633292 NaN NaN NaN NaN NaN \n", - "AC09635585 NaN NaN NaN NaN NaN \n", - "AC09636834 NaN NaN NaN NaN NaN \n", - "AC09636837 NaN NaN NaN NaN NaN \n", - "AC07152452 NaN NaN NaN NaN NaN \n", - "AC11450226 NaN NaN NaN NaN NaN \n", - "\n", - " Standort VD17 \n", - "AC09771400 NaN NaN \n", - "AC09787927 NaN NaN \n", - "AC09792016 NaN NaN \n", - "AC09792044 NaN NaN \n", - "AC09792047 NaN NaN \n", - "AC09792499 NaN NaN \n", - "AC09806083 NaN NaN \n", - "AC09954400 NaN NaN \n", - "AC09960983 NaN NaN \n", - "AC09996631 NaN NaN \n", - "AC10011007 NaN NaN \n", - "AC10011543 NaN NaN \n", - "AC10443086 NaN NaN \n", - "AC13781340 NaN NaN \n", - "AC15228519 NaN NaN \n", - "AC07921482 NaN NaN \n", - "AC08512822 NaN NaN \n", - "AC15245305 NaN NaN \n", - "AC15245267 NaN NaN \n", - "AC15245255 NaN NaN \n", - "AC10457848 NaN NaN \n", - "AC09626715 NaN NaN \n", - "AC09626717 NaN NaN \n", - "AC09627140 NaN NaN \n", - "AC09627175 NaN NaN \n", - "AC09627176 NaN NaN \n", - "AC09627177 NaN NaN \n", - "AC10480538 NaN NaN \n", - "AC09629087 NaN NaN \n", - "AC09629088 NaN NaN \n", - "AC08886350 NaN NaN \n", - "AC09633292 NaN NaN \n", - "AC09635585 NaN NaN \n", - "AC09636834 NaN NaN \n", - "AC09636837 NaN NaN \n", - "AC07152452 NaN NaN \n", - "AC11450226 NaN NaN \n", + " old_value new_value\n", + "Systemnummer \n", + "AC03114611 990004456580603338 990004456580603136\n", + "AC03826205 990005906350603338 990005906350603264\n", + "AC09792500 990029473670603338 990029473670603264\n", + "AC09836279 990029921640603338 990029921640603136\n", + "AC07705435 990016481420603338 990016481420603136\n", + "... ... ...\n", + "AC14487653 990057677380603338 990057677380603136\n", + "AC14494673 990057713410603338 990057713410603264\n", + "AC14494679 990057713430603338 990057713430603264\n", + "AC06335423 990057719990603338 990057719990603264\n", + "AC14499956 990057728090603338 990057728090603264\n", "\n", - "[37 rows x 48 columns]" + "[479 rows x 2 columns]" ] }, - "execution_count": 28, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "new[new.Systemnummer.isna()]" + "mms_different" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Volltext" ] }, { @@ -2075,16 +1449,16 @@ "metadata": {}, "outputs": [], "source": [ - "old[old.Systemnummer.in]" + "volltext_diff = compare('Volltext')" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "import json" + "volltext_diff.old_value.is" ] }, { diff --git a/test/dataextractors/test_index.py b/test/dataextractors/test_index.py index 2d48d4e..29a6d4d 100644 --- a/test/dataextractors/test_index.py +++ b/test/dataextractors/test_index.py @@ -8,6 +8,7 @@ from travelogues_extraction.dataextractors.dataextractors.index import IndexSett dummy_data = pd.read_excel('test/dummy_data/TravelogueD19_ALMAoutput_20200712.xlsx') + @pytest.mark.asyncio async def test_index_and_mmsid(): reduced_series = dummy_data['Datensatznummer'][:25] @@ -25,7 +26,9 @@ async def test_index_and_mmsid(): assert index_setter.target_dataframe.iloc[0, 0].startswith('AC') await mmsid_extractor.write(record) assert mmsid_extractor.target_dataframe.shape == (1, 2) - assert index_setter.target_dataframe.iloc[0, 1][0].isdigit() + mmsid: str = index_setter.target_dataframe.iloc[0, 1] + assert mmsid.isdigit() + assert mmsid.endswith('331') or mmsid.endswith('338') # once more in another style @@ -37,11 +40,10 @@ async def test_index_and_mmsid(): for column, transformer in enumerate(transformers): await transformer.write(record) assert target_dataframe.shape == (index, 2) - assert target_dataframe.iat[index -1, column].__class__ is str + assert target_dataframe.iat[index - 1, column].__class__ is str + print(target_dataframe.iat[index - 1, column]) index += 1 if index == 5: break - - diff --git a/test/getrecords/test_session.py b/test/getrecords/test_session.py index d755623..2c173b4 100644 --- a/test/getrecords/test_session.py +++ b/test/getrecords/test_session.py @@ -16,6 +16,7 @@ from travelogues_extraction.dataextractors.dataextractors.index import IndexSett dummy_data = pd.read_excel('test/dummy_data/TravelogueD19_ALMAoutput_20200712.xlsx') + @pytest.mark.asyncio async def test_record_retriever(): reduced_series = dummy_data['Datensatznummer'][:25] diff --git a/travelogues_extraction/analytics/__init__.py b/travelogues_extraction/analytics/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/travelogues_extraction/analytics/compare.py b/travelogues_extraction/analytics/compare.py new file mode 100644 index 0000000..be0b3e7 --- /dev/null +++ b/travelogues_extraction/analytics/compare.py @@ -0,0 +1,13 @@ +import pandas as pd + +def compare(column: str, left: pd.DataFrame, right: pd.DataFrame) -> pd.DataFrame: + left_column = left[column] + right_column = right[column] + old_diff = left_column[left_column != right_column] + new_diff = right_column[left_column != right_column] + return pd.DataFrame({ + 'old_value': old_diff, + 'new_value': new_diff, + }, index=old_diff.index) + + diff --git a/travelogues_extraction/getrecords/session.py b/travelogues_extraction/getrecords/session.py index 73e066d..f344285 100644 --- a/travelogues_extraction/getrecords/session.py +++ b/travelogues_extraction/getrecords/session.py @@ -13,6 +13,7 @@ class RecordRetriever: ac_list: typing.List[str] session: httpx.AsyncClient + current_response: typing.Optional[httpx.Response] url = 'https://obv-at-oenb.alma.exlibrisgroup.com/view/sru/43ACC_ONB' @@ -31,6 +32,7 @@ class RecordRetriever: self.all_ok = True # so far self.session = session self.sleep = 0.01 + self.current_response = None @dataclass class Record: @@ -51,7 +53,7 @@ class RecordRetriever: try: await asyncio.sleep(self.sleep) - response = await self.session.get(url=self.url, params={ + self.current_response = await self.session.get(url=self.url, params={ 'startRecord': 1, 'maximumRecords': 1, 'query': f'alma.local_control_field_009={ac_number}', @@ -72,7 +74,7 @@ class RecordRetriever: self.sleep *= 1.3 try: await asyncio.sleep(self.sleep) - response = await self.session.get(url=self.url, params={ + self.current_response = await self.session.get(url=self.url, params={ 'startRecord': 1, 'maximumRecords': 1, 'query': f'alma.local_control_field_009={ac_number}', @@ -100,21 +102,21 @@ class RecordRetriever: sub_log = { 'ac_number': ac_number, - 'status_code': response.status_code, - 'url': response.url.full_path, + 'status_code': self.current_response.status_code, + 'url': self.current_response.url.full_path, } - if response.status_code != 200: - sub_log['response_error_message'] = response.text + if self.current_response.status_code != 200: + sub_log['response_error_message'] = self.current_response.text self.log.append(sub_log) self.all_ok = False return None try: - xml = lxmletree.fromstring(response.content) + xml = lxmletree.fromstring(self.current_response.content) except Exception as e: sub_log['lxml_error'] = e - sub_log['content'] = response.content + sub_log['content'] = self.current_response.content self.log.append(sub_log) self.all_ok = False return None -- GitLab