Das macht Sinn.*Keks krümel*Netherwarze zum Beispiel. *krümelt Tee*
Das macht Sinn.*Keks krümel*Netherwarze zum Beispiel. *krümelt Tee*
Also mich stört das nicht.Ich merks, sehr sehr nervig.
Es gibt da im Nether ein bestimmtes Mineral.Was gibt es denn mit Q?
Es heißt aber nicht NetherquartzblockDu hast ja natürlich recht. Wobei, heißt der nicht Netherquartz?
Meiner ist auch schon da.Ok, Beitrag ist dann versendet.
Processing uw_stats\.html_content\page_0001.html
0.006998538970947266
0.002943754196166992
0.004000425338745117
0.0039980411529541016
0.0030014514923095703
0.00500035285949707
0.004004001617431641
0.004994630813598633
0.004004478454589844
0.0049953460693359375
0.005000591278076172
0.003999948501586914
0.00500035285949707
0.003998994827270508
0.0049974918365478516
0.006000995635986328
0.0049991607666015625
0.006000041961669922
0.0060956478118896484
0.005991458892822266
Processing uw_stats\.html_content\page_0002.html
0.005001544952392578
0.0060007572174072266
0.004999399185180664
0.005998849868774414
0.007001399993896484
0.00600123405456543
0.0069980621337890625
0.00700068473815918
0.009998559951782227
0.008001565933227539
0.006999015808105469
0.006999015808105469
0.006997823715209961
0.007001399993896484
0.0070002079010009766
0.00700068473815918
0.007998943328857422
0.00800013542175293
0.007999897003173828
0.00800013542175293
Processing uw_stats\.html_content\page_0003.html
0.007000446319580078
0.008000612258911133
0.008999347686767578
0.008000612258911133
0.007999420166015625
0.008999347686767578
0.008001327514648438
0.008997678756713867
0.008000373840332031
0.00893712043762207
0.009002208709716797
0.00807809829711914
0.009924888610839844
0.009999275207519531
0.010001182556152344
0.008997201919555664
0.010002851486206055
0.00899958610534668
0.009001016616821289
0.010006189346313477
Processing uw_stats\.html_content\page_0004.html
0.009981393814086914
0.009961843490600586
0.009999990463256836
0.010999679565429688
0.010003805160522461
0.009999275207519531
0.010998725891113281
0.011003971099853516
0.010997533798217773
0.010998010635375977
0.011002063751220703
0.011000871658325195
0.01199793815612793
0.014001607894897461
0.012999773025512695
0.012999773025512695
0.012003421783447266
0.010996818542480469
0.01111912727355957
0.012880802154541016
Processing uw_stats\.html_content\page_0005.html
0.01000070571899414
0.011999130249023438
0.012001276016235352
0.014030694961547852
0.012971162796020508
0.013000726699829102
0.014835119247436523
0.01500082015991211
0.01500082015991211
0.012997150421142578
0.014002084732055664
0.012999773025512695
0.012999296188354492
0.01400303840637207
0.013998746871948242
0.014001607894897461
0.022001028060913086
0.01599884033203125
0.015000104904174805
0.014000415802001953
Processing uw_stats\.html_content\page_0006.html
0.012989997863769531
0.015999317169189453
0.015002012252807617
0.015996694564819336
0.0149993896484375
0.014999866485595703
0.015001535415649414
0.015000104904174805
0.015000343322753906
0.02199864387512207
0.018006324768066406
0.01599574089050293
0.016999483108520508
0.016000986099243164
0.015998125076293945
0.020001888275146484
0.016002655029296875
0.017996788024902344
0.018000125885009766
0.01668524742126465
Processing uw_stats\.html_content\page_0007.html
0.015004158020019531
0.016957759857177734
0.027009248733520508
0.016962766647338867
0.01799774169921875
0.015977859497070312
0.017003774642944336
0.017000913619995117
0.018000125885009766
0.024997711181640625
0.01797008514404297
0.017000913619995117
0.01699972152709961
0.01798868179321289
0.019993066787719727
0.01799917221069336
0.02700042724609375
0.019000530242919922
0.01896214485168457
0.018998384475708008
Processing uw_stats\.html_content\page_0008.html
0.01797342300415039
0.01899886131286621
0.018999338150024414
0.020000934600830078
0.019999027252197266
0.01799774169921875
0.020002126693725586
0.023561477661132812
0.022028207778930664
0.020973920822143555
0.021996021270751953
0.021001577377319336
0.020999670028686523
0.024000883102416992
0.046001434326171875
0.029996633529663086
0.023000240325927734
0.024001598358154297
0.024001121520996094
0.0240018367767334
Processing uw_stats\.html_content\page_0009.html
0.020000934600830078
0.023000717163085938
0.023000717163085938
0.021998167037963867
0.022001266479492188
0.02200007438659668
0.02299809455871582
0.023000717163085938
0.025999069213867188
0.023000717163085938
0.02399921417236328
0.02400040626525879
0.024000167846679688
0.02499985694885254
0.024999618530273438
0.02300095558166504
0.02499985694885254
0.02499866485595703
0.023999691009521484
0.027002573013305664
Processing uw_stats\.html_content\page_0010.html
0.022999048233032227
0.025000333786010742
0.02604055404663086
0.024959325790405273
0.02395009994506836
0.02400040626525879
0.024003982543945312
0.02899646759033203
0.024997234344482422
0.025002479553222656
0.02399897575378418
0.02802729606628418
0.031000852584838867
0.02599954605102539
0.025000572204589844
0.02599954605102539
0.025000810623168945
0.026999711990356445
0.02893853187561035
0.02699899673461914
Processing uw_stats\.html_content\page_0011.html
0.029999494552612305
0.028001070022583008
0.02799844741821289
0.027999162673950195
0.031002044677734375
0.031998395919799805
0.027997732162475586
0.027002811431884766
0.02700328826904297
0.02699732780456543
0.027998924255371094
0.02500128746032715
0.02599930763244629
0.02599644660949707
0.026999711990356445
0.029000520706176758
0.02700042724609375
0.028140544891357422
0.02885723114013672
0.027000904083251953
Processing uw_stats\.html_content\page_0012.html
0.027000904083251953
0.029999256134033203
0.026999711990356445
0.0280001163482666
0.0279998779296875
0.02800130844116211
0.029999971389770508
0.026999711990356445
0.028002500534057617
0.027997493743896484
0.02900242805480957
0.03599882125854492
0.028002262115478516
0.029999971389770508
0.02900075912475586
0.029999256134033203
0.030031442642211914
0.030971050262451172
0.0299990177154541
0.0319974422454834
Processing uw_stats\.html_content\page_0013.html
0.03199887275695801
0.032001495361328125
0.03300070762634277
0.032006263732910156
0.03099989891052246
0.03200173377990723
0.03300023078918457
0.029039621353149414
0.03000473976135254
0.030956745147705078
0.030997037887573242
0.03200030326843262
0.030039310455322266
0.03000354766845703
0.030040264129638672
0.031986236572265625
0.0340118408203125
0.028959989547729492
0.030045509338378906
0.03195309638977051
Processing uw_stats\.html_content\page_0014.html
0.03200030326843262
0.03500056266784668
0.03799796104431152
0.034002065658569336
0.03499746322631836
0.03600287437438965
0.03599882125854492
0.03399944305419922
0.036000967025756836
0.03599882125854492
0.0360410213470459
0.03200078010559082
0.03103041648864746
0.033988237380981445
0.03600931167602539
0.032999515533447266
0.03200340270996094
0.0360417366027832
0.0410006046295166
0.03199958801269531
Processing uw_stats\.html_content\page_0015.html
0.03200888633728027
0.0340273380279541
0.03398609161376953
0.03400111198425293
0.03600931167602539
0.03303980827331543
0.0350189208984375
0.03495979309082031
0.04102897644042969
0.03401017189025879
0.035001277923583984
0.03298759460449219
0.03601551055908203
0.03304243087768555
0.03403973579406738
0.03499865531921387
0.03800177574157715
0.0350031852722168
0.03499889373779297
0.03598523139953613
Processing uw_stats\.html_content\page_0016.html
0.03200054168701172
0.04002833366394043
0.03701043128967285
0.03600621223449707
0.03595471382141113
0.04203152656555176
0.03599667549133301
0.03500938415527344
0.036005496978759766
0.03898453712463379
0.03701066970825195
0.036004066467285156
0.037039995193481445
0.03998994827270508
0.0360262393951416
0.03600287437438965
0.03702902793884277
0.04101157188415527
0.03658294677734375
0.037999868392944336
Processing uw_stats\.html_content\page_0017.html
0.0360107421875
0.03598833084106445
0.05011296272277832
0.03899979591369629
0.037352800369262695
0.04191780090332031
0.0391690731048584
0.03700089454650879
0.03699302673339844
0.0420069694519043
0.03800082206726074
0.0380406379699707
0.03897356986999512
0.0390169620513916
0.0380396842956543
0.03999948501586914
0.04296135902404785
0.0400393009185791
0.04000067710876465
0.049988508224487305
Processing uw_stats\.html_content\page_0018.html
0.039006710052490234
0.03999924659729004
0.039000511169433594
0.053003787994384766
0.03899335861206055
0.0410003662109375
0.043946266174316406
0.04000043869018555
0.040038108825683594
0.04099011421203613
0.042040109634399414
0.03998589515686035
0.04100990295410156
0.051039695739746094
0.039994001388549805
0.03898954391479492
0.04797077178955078
0.04304242134094238
0.040997982025146484
0.04196286201477051
Processing uw_stats\.html_content\page_0019.html
0.03998851776123047
0.042969703674316406
0.0400395393371582
0.04198813438415527
0.04397153854370117
0.04403996467590332
0.040999650955200195
0.0449674129486084
0.048041343688964844
0.043956756591796875
0.04403495788574219
0.0460052490234375
0.04300093650817871
0.0429995059967041
0.05699944496154785
0.04199028015136719
0.04198718070983887
0.045035600662231445
0.04400038719177246
0.04400205612182617
Processing uw_stats\.html_content\page_0020.html
0.04000377655029297
0.04695844650268555
0.044037818908691406
0.04300737380981445
0.04500102996826172
0.04503750801086426
0.043004512786865234
0.044986724853515625
0.05202054977416992
0.042992591857910156
0.055021047592163086
0.0450291633605957
0.04399752616882324
0.0479731559753418
0.04504108428955078
0.044998884201049805
0.04496264457702637
0.046998023986816406
0.0449976921081543
0.05096316337585449
Processing uw_stats\.html_content\page_0021.html
0.04200291633605957
0.04899764060974121
0.046000003814697266
0.04499363899230957
0.052039384841918945
0.04500842094421387
0.045001983642578125
0.049948930740356445
0.04804039001464844
0.046003103256225586
0.05599379539489746
0.04600334167480469
0.046002864837646484
0.05100059509277344
0.04599571228027344
0.047003984451293945
0.049015045166015625
0.04600262641906738
0.04698801040649414
0.052027225494384766
Processing uw_stats\.html_content\page_0022.html
0.04899454116821289
0.045984506607055664
0.04602694511413574
0.051000356674194336
0.04700446128845215
0.04603838920593262
0.062004804611206055
0.05000042915344238
0.04899311065673828
0.05001330375671387
0.04799699783325195
0.08300113677978516
0.04803657531738281
0.04797792434692383
0.050002098083496094
0.0480043888092041
0.05199551582336426
0.053040266036987305
def construct_dataframe(path: str | Path) -> pd.DataFrame:
"""Constructs a dataframe pagewise from HTML files.
This could eventually be split up into multiple functions or a class.
Args:
path (str | Path): The path containing the HTML files.
Returns:
pd.DataFrame: The newly created dataframe.
"""
df = pd.DataFrame(
columns=(
"raw",
"author",
"content",
"like_count",
"quote_count",
"quoted_list",
"spoiler_count",
"mentions_count",
"mentioned_list",
"word_count",
"emoji_count",
"emoji_frequency_mapping",
)
)
for file in sorted(
Path(path).iterdir(), key=lambda s: re.findall(r"\d+", s.name)[0]
):
if file.is_dir():
continue
print("Processing", file)
soup = bs4.BeautifulSoup(file.read_text("utf-8"))
import time
for message in find_all_messages(soup):
start = time.time() # Timings
raw = str(message)
author = message["data-author"]
content = find_message_content(message)
insert_dot_before_last_emoji(content)
like_count = get_amount_of_likes(message)
quote_count = get_amount_of_quotes(message)
quoted_list = get_list_of_quoted_usernames(message)
spoiler_count = get_amount_of_spoilers(message)
mentioned_list = get_list_of_mentioned_usernames(message)
mentions_count = len(mentioned_list)
word_count = get_amount_of_words(message)
emoji_frequency_mapping = (
get_mapping_of_emojis_and_frequency(message))
emoji_count = len(emoji_frequency_mapping)
message_series = pd.Series(
data=(
raw,
author,
content,
like_count,
quote_count,
quoted_list,
spoiler_count,
mentions_count,
mentioned_list,
word_count,
emoji_count,
emoji_frequency_mapping,
)
)
df = pd.concat([df, message_series])
print(time.time() - start) # Timings
return df
my_profiling
Funktion an. Den Dump kannst du mit snakeviz
visualisieren. Screenshot?find_all_messages()
aus?df = pd.concat([df, message_series])
erzeugt glaube ich jedes mal eine Kopie. Sinnvoller wäre df.append(message_series)
(bin mir mit der syntax da nicht ganz sicher) zu verwenden.pandas.concat()
: "It is not recommended to build DataFrames by adding single rows in a for loop. Build a list of rows and make a DataFrame in a single concat."Das ist relativ egal. Wenn du Multithreading brauchst, hast du entweder ineffizienten Code, oder einen riesen Datensatz (oder beides). Bei großen Datensätzen lässt du ein script oft lieber mehrfach parallel laufen als Multithreading zu implementieren. Letzteres ist in der Wissenschaft oft so.Edit: Ich weiß natürlich, dass das Script nur auf einem Kern läuft, was die CPU Auslastung erklärt.
Ich find Programmieren eigentlich eine sehr nette Sache, wie fängt man denn da am Besten an, wenn man das Lernen möchte?Schau dir das mal mit meinermy_profiling
Funktion an. Den Dump kannst du mitsnakeviz
visualisieren. Screenshot?
EDIT: Wie sieht diefind_all_messages()
aus?
EDIT2: Die Zeiledf = pd.concat([df, message_series])
erzeugt glaube ich jedes mal eine Kopie. Sinnvoller wäredf.append(message_series)
(bin mir mit der syntax da nicht ganz sicher) zu verwenden.
Edit3: Aus dem Hanbuch-Eintrag zupandas.concat()
: "It is not recommended to build DataFrames by adding single rows in a for loop. Build a list of rows and make a DataFrame in a single concat."
Edit4: Das ist relativ egal. Wenn du Multithreading brauchst, hast du entweder ineffizienten Code, oder einen riesen Datensatz (oder beides). Bei großen Datensätzen lässt du ein script oft lieber mehrfach parallel laufen als Multithreading zu implementieren. Letzteres ist in der Wissenschaft oft so.
Edit5: Mein script läuft für 717 Seiten unter 5 Minuten, was ganz okay ist. Alles singelthreading und kein async. Ich weiß was ich optimieren könnte, aber eigentlich ist es mir in dem Fall egal.
Ich glaube ein paar Videos anschauen, wo die ersten Schritte erklärt werden. Die anderen können das aber bestimmt besser sagen wie man das am besten macht.Ich find Programmieren eigentlich eine sehr nette Sache, wie fängt man denn da am Besten an, wenn man das Lernen möchte?
Zu edit1: Nur ein Aufruf zur find_all methode mit tag `article` und class `message`.Schau dir das mal mit meinermy_profiling
Funktion an. Den Dump kannst du mitsnakeviz
visualisieren. Screenshot?
EDIT: Wie sieht diefind_all_messages()
aus?
EDIT2: Die Zeiledf = pd.concat([df, message_series])
erzeugt glaube ich jedes mal eine Kopie. Sinnvoller wäredf.append(message_series)
(bin mir mit der syntax da nicht ganz sicher) zu verwenden.
Edit3: Aus dem Hanbuch-Eintrag zupandas.concat()
: "It is not recommended to build DataFrames by adding single rows in a for loop. Build a list of rows and make a DataFrame in a single concat."
Edit4: Das ist relativ egal. Wenn du Multithreading brauchst, hast du entweder ineffizienten Code, oder einen riesen Datensatz (oder beides). Bei großen Datensätzen lässt du ein script oft lieber mehrfach parallel laufen als Multithreading zu implementieren. Letzteres ist in der Wissenschaft oft so.
Edit5: Mein script läuft für 717 Seiten unter 5 Minuten, was ganz okay ist. Alles singelthreading und kein async. Ich weiß was ich optimieren könnte, aber eigentlich ist es mir in dem Fall egal.
Wir verwenden unerlässliche Cookies, damit diese Website funktioniert, und optionale Cookies, um dein Erlebnis zu verbessern.