Kezdőoldal » Számítástechnika » Programozás » Mit rontottam el ebben a...

Mit rontottam el ebben a python kódban miért nem akar lefutni?

Figyelt kérdés

Adott egy fájl ami számokat tartalmaz így


12100.5

10331.666666666666

9620.0

10304.0

11042.6

11139.125

13328.375


[link]


ebből a fájlból én szeretnék magamnak statisztikát csinálni bontásokban(átlag,összeg,darabszám stb...)


A kódot meg is írtam de valamiért nem jó



[link]


Miért nem fut le mit hibáztam el benne?


2022. aug. 25. 20:30
1 2
 1/13 anonim ***** válasza:
78%
Kezd elorol a programot, es eloszor annyit csinalj meg hogy 1 db bontasra mukodjon, nem 5-re.
2022. aug. 25. 20:53
Hasznos számodra ez a válasz?
 2/13 anonim ***** válasza:
84%

Vagy én értem teljesen félre a problémát, vagy teljesen rossz a script. Ha jól értem, van egy számsorod, amiket bin-ekre akarod osztani (ezt hívod bontásnak, ha jól értem), azaz ha 100-as bontással dolgozol, akkor csinálsz egy statisztikát az első 100 elemről, majd a második 100 elemről és így tovább. Ez nem történik. Egyáltalán.


De van pár teljesen banális hiba:


for y in lista: <- ennél a sornál már csökkenteni kell a behúzást, hiszen a file-t már beolvastad.


end=(start-bontas)-1

Ez nem jo: a start mindig nagyobb lesz, mint az end. Marginális megjegyzés, de nem tartom jó ötletnek a magyar es angol vátozónevek keverését.


stat[bontas,bontasindex,'START']

A stat egy dictionary, igy nem lehet használni. Valószínűleg valami ilyet akarsz: stat[bontas][bontasindex]['START'], de igy ez sem fog menni, mert itt olyan dictionary van, aminek dictionary-k az elemei. Ezeket vagy initializálod, vagy default-dict-et használsz.



Nem világos, hogy a végén hogy akarod reprezentálni ezt az egészet... Szóval lesz egy táblázatod, minden bontásra? ezeket ki akarod írni külön file-ba? Mindegy az a lényeg, hogy táblázatos adatod van, statisztikát akarsz rajta csinálni, akkor annak megfelelő eszközöket használj: pandas.


Itt egy megoldas (ha jol ertettem a feladatot): [link]

2022. aug. 25. 23:33
Hasznos számodra ez a válasz?
 3/13 anonim ***** válasza:
80%

Én is nagyon arra tippelek, mint a #2-es hozzászóló gondol, hogy itt a beolvasott értékeket különböző osztályszélességű osztályokba akarja rendezni a kérdező (mint amikor hisztogramot - [link] - készít az ember).


Ha teljesen az alapokról, bármiféle modul hozzáadása nélkül akarod megcsinálni kedves kérdező a dolgot, akkor javaslom, hogy a statisztikát szervezd egy listába, ahol a lista egy eleme, dictionary típusú és az adott osztályszélességű osztályokat - az osztály intervallumával ("kezdet"/"vege"), gyakoriságával ("darab") - tartalmazza.


Szóval valahogy így (a JSON modul csak a formázott megjelenítés miatt kell) képzelném el:

[link]

ilyesmi kimenetet generál:

[link]

2022. aug. 26. 00:02
Hasznos számodra ez a válasz?
 4/13 A kérdező kommentje:
Köszönöm a válaszokat így már menni fog.
2022. aug. 26. 10:14
 5/13 anonim ***** válasza:
Ha az egyes bontasokra szamolt adatokat kulon file-ba akarod kimenteni: [link]
2022. aug. 26. 10:18
Hasznos számodra ez a válasz?
 6/13 anonim ***** válasza:

@3 "ilyesmi kimenetet generál:" -> [link]

Az nem teljesen vilagos, hogyha az "osztalyszelesseg": 100, hogy lehet a "darab": 3? Ennek az utolso elemet kiveve mindig 100-nak kellene lennie, nem? Illetve szerintem nem stimmelnek az ertekek sem. Az elso 100 elemnek az osszege joval meghaladja az "osszeg": 79.0-et. Vagy szintetikus adatokkal dolgoztal? (de meg ugy sem ertem a "darab": 3-at)

2022. aug. 26. 10:22
Hasznos számodra ez a válasz?
 7/13 anonim ***** válasza:

"Az nem teljesen vilagos, hogyha az "osztalyszelesseg": 100, hogy lehet a "darab": 3?"

Úgy, hogy az osztályszélesség (a részintervallum mérete, amit az x tengelyen ábrázolunk) nem azonos az osztálygyakorisággal (ami a "darab"). Lásd a belinkelt Wikipedia-cikket - főként a példát:

[link]

bár az osztályszélesség 100 illetve 200, az osztálygyakoriság (a "darab") 5-9-ig tart.


"Az elso 100 elemnek az osszege joval meghaladja az "osszeg": 79.0-et."

Nem az első 100 elemet nézzük, hanem a 0 és 99 értékek közé eső számok összegét.

2022. aug. 26. 10:51
Hasznos számodra ez a válasz?
 8/13 anonim ***** válasza:
OK, tehat NEM az index alapjan osztottuk el az adatokat, hanem eloszor sorba rendeztuk oket es lefedett skalat osztottuk el n reszre es azokba dobaltuk be a lista elemeit. Ertem, igy mar vilagos.
2022. aug. 26. 11:19
Hasznos számodra ez a válasz?
 9/13 anonim ***** válasza:
OK, most mar ez a script is a tiedhez hasonlo eredmenyt ad: [link]
2022. aug. 26. 11:59
Hasznos számodra ez a válasz?
 10/13 anonim ***** válasza:

#2 "A stat egy dictionary, igy nem lehet használni"

Most a kód hajmeresztőségét leszámítva, szintaktikailag semmi gond nincs a valami[valami1, valami2, valami3] kifejezéssel, ami egy __getitem__ hívás a (valami1, valami2, valami3) tuple-lel. Hogy messzebb ne menjünk, a pandas DataFrame .loc-ja is ugyanezt a szintaxist használja. Mivel a tuple hashelhető típus, nyugodtan lehet dictionary kulcsaként használni. Néha még hasznos is!

2022. szept. 14. 14:56
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!