Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2023-07-17, 21:56
  #1
Medlem
Kip.Kinkels avatar
Jag ska sortera en csv-fil med blandade data i sjunkande ordning efter den tredje (numeriska) kolumnen. Vill ha hela de sorterade raderna printade till terminalen eller sparade i en csv-fil. Jag har prövat massvis av algoritmer i C och Bash, men det fungerar inte. När jag granskar filen med cat eller i en texteditor, så sorteras bara ett subset av all data. Ibland sorteras inte data alls. Om jag testar algoritmerna på typ 1000 observationer så fungerar det bra, men inte med dessa större datamängder. Vad är det som går fel? Min aspergerskalle håller på att explodera!
Citera
2023-07-17, 22:05
  #2
Medlem
Kanske finns något liknande till C, men det första jag kommer att tänka på är Pandas i Python:

https://stackoverflow.com/questions/...-pandas-python

Använde det i mitt exjobb för att städa/sortera några hundratusen rader.
Citera
2023-07-17, 22:16
  #3
Medlem
Bra jobb för en databas. Importera, exportera.
Citera
2023-07-17, 22:17
  #4
Medlem
Kip.Kinkels avatar
Citat:
Ursprungligen postat av Leffemk
Kanske finns något liknande till C, men det första jag kommer att tänka på är Pandas i Python:

https://stackoverflow.com/questions/...-pandas-python

Använde det i mitt exjobb för att städa/sortera några hundratusen rader.

Pandas bygger väl på data frames och är väldigt långsamt? Det kan hända att jag behöver sortera miljardtals rader. Tack för tipset ändå!
Citera
2023-07-17, 22:19
  #5
Medlem
Kip.Kinkels avatar
Citat:
Ursprungligen postat av PastorBolognese
Bra jobb för en databas. Importera, exportera.

Tanken att importera csv-filen till MySQL/MariaDB är faktiskt något jag funderat på. MySQL är ju byggt i C så ren C-kod borde väl fungera?
Citera
2023-07-17, 22:20
  #6
Medlem
4yoonlys avatar
Citat:
Ursprungligen postat av PastorBolognese
Bra jobb för en databas. Importera, exportera.

Exakt!
Citera
2023-07-17, 22:24
  #7
Avstängd
Citat:
Ursprungligen postat av Kip.Kinkel
Tanken att importera csv-filen till MySQL/MariaDB är faktiskt något jag funderat på. MySQL är ju byggt i C så ren C-kod borde väl fungera?

Om du använder c för att bygga en databas motor så ja.
Citera
2023-07-17, 22:26
  #8
Medlem
Kip.Kinkels avatar
Citat:
Ursprungligen postat av kalle632
Om du använder c för att bygga en databas motor så ja.

Vad är det som går snett i C vid användande av vanliga sorteringsalgoritmer tror du? Räcker inte minnet till? Har testad inbyggda qsort(), men även annat. Det bästa vore kanske radix sort?
Citera
2023-07-17, 22:27
  #9
Moderator
vhes avatar
Hur ser datan ut? På vilket sätt misslyckas programmet sort?
Citera
2023-07-17, 22:32
  #10
Avstängd
Citat:
Ursprungligen postat av Kip.Kinkel
Vad är det som går snett i C vid användande av vanliga sorteringsalgoritmer tror du? Räcker inte minnet till? Har testad inbyggda qsort(), men även annat. Det bästa vore kanske radix sort?

Vad har det med att "mysql är skrivit i c att göra?
Föreslaget var att dra in det i en databas
Citera
2023-07-17, 22:34
  #11
Medlem
Kip.Kinkels avatar
Citat:
Ursprungligen postat av vhe
Hur ser datan ut? På vilket sätt misslyckas programmet sort?

Data genereras av en brute force optimeringsalgoritm (inte gradient descent utan random alltså). Fält/kolumner är enligt följade:

description (string), intercept (double), coefficients_x1, x2, x3... xn (double), epsilon (double)

---> sortera i fallande ordning efter x1.

Antingen sorteras bara ett subset, eller så blir det synbart slumpmässig sortering.
Citera
2023-07-17, 22:38
  #12
Medlem
Kip.Kinkels avatar
Citat:
Ursprungligen postat av kalle632
Vad har det med att "mysql är skrivit i c att göra?
Föreslaget var att dra in det i en databas

C borde klara detta eftersom C bygger andra system. Varför måste man ha en relationsdatabas för att sortera ett stort antal data? Det passar in dåligt i den struktur jag tänkt mig.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback