Q:

Take data from a CSV file, then compare based on the different days listed

I have a CSV file (songs.csv) which lists songs in the order that they were played on a radio station. Songs are listed each time they are played, so there are some duplicates each day. 
What I want to do is break this up into days, find new songs played since the previous day. 
For example, songs played on Monday, Tuesday would have mostly the same songs played, but some songs new songs that weren't played on Monday. 
Can I use PowerShell to do this?

A:

I think this does it, but with caveats:

Edit the CSV file and add a top line for column names, e.g. Date, Time, Artist, Song
Delete the thousands of empty lines at the end of the file that are just ,,,

This script will import the modified CSV, group the songs by day, then show songs played that day that weren't played the previous one day.
NB. If a song is played on Monday it will show as a new song. If it is not played on Tuesday, then is played on Wednesday it will show as a new song again since Tuesday.
NB. Because you mention songs played in order, if "Demon" is played as a new song, then is played again later the same day, it's shown again as a new song. The output is in order-played, not alphabetical-order, with no attempt to remove duplicates.
NB. There are errors in the input - spacing/spelling errors, putting the artist name in the song title column, this script takes the errors and produces errors in the output. It's not magic(tm).
$songs = Import-Csv .\songs.csv

$songsByDay = ($songs | Group-Object "Date" | Sort-Object -Property "Name")

$previousDay = @()
foreach ($day in $songsByDay) {
    write "----"
    write $day.Name
    $daySongTitles = @($day.Group | %{ $_.Song })

    foreach ($songTitle in $daySongTitles) {
        if ($songTitle -notin $previousDay) {
            write $songTitle
        }
    }
    $previousDay = $($daySongTitles | Sort-Object)
}

EDIT
Changed script to track songs for every day, and print the artist name, here:
$songs = Import-Csv .\songs.csv

$songsByDay = ($songs | Group-Object "Date" | Sort-Object -Property "Name")

$previousDay = @()
foreach ($day in $songsByDay) {
    write "----"
    write $day.Name

    foreach ($song in @($day.Group)) {

        if ($song.Song -notin $previousDay) {
            write "$($song.Artist) - $($song.Song)"
        }
    }
    $previousDay += @($day.Group | %{ $_.Song })
}

