Анализ файла CSV в поисках тенденций или отклонений - PullRequest
1 голос
/ 21 марта 2012

Я часто сталкиваюсь с данными (электронными таблицами, настройками и т. Д.), Которые мне приходится анализировать, чтобы попытаться выяснить, что может быть причиной событий.Иногда хорошие вещи, но обычно плохие и часто в срочном порядке в данных, которые я никогда раньше не изучал, и, возможно, вообще незнакомы с ними.

Я пытался найти инструмент для расширенного анализа, который будет искать повторные фразы илидругие вещи, которые могли бы облегчить общее понимание тенденций в данных, но ничего не могли найти.

Я публикую сообщения по двум причинам

  • Я надеюсь нарекомендация относительно какого-либо программного обеспечения, которое может выполнять такой анализ
  • Я написал сценарий PowerShell, который выполняет очень простой анализ, я хотел поделиться им и надеюсь на его усовершенствования (включая инкапсуляцию вфункция).

Приведенный мною код просто подсчитывает количество раз, которое каждая запись отображается в каждом столбце, сортирует на основе этого количества и выводит отформатированные результаты.


    #Before You Begin, Set the following
    $SourceFile = Get-ChildItem ".\SomeFile.csv"
    $OutputFile = &{$d=$SourceFile.Directory; $n=$SourceFile.BaseName; $e=$SourceFile.Extension; "$d\$n"+"_Stats"+"$e"} #This just appends _Stats to the source filename

    #$Data = gci . #For Testing
    $Data = Import-Csv $SourceFile
    $ColumnList = $Data|Get-Member|where-object{$_.MemberType -eq "NoteProperty"}|ForEach-Object{$_.Name}
    $CountedData = $ColumnList|ForEach-Object{
        $ThisColumn = $_; 
        $Data|Group-Object $ThisColumn|Select-Object @{
            n="ColumnName"; 
            e={$ThisColumn}
        },Count, @{
            n="Value"; 
            e={$_.Name}
        }
    }|Sort -Descending Count,ColumnName,Value #ColumnName, Count, Value
    $Results=""
    $CountedData|Group-Object ColumnName|ForEach-Object{
        $ThisColumn=$_.name; 
        $ThisGroup=$_.Group; 
        $Results="$Results`n$ThisColumn"; 
        $ThisGroup|ForEach-Object{
            $ThisCount=$_.Count;
            $ThisValue=$_.Value;
            $Results=$Results+",($ThisCount) $ThisValue"
        }
    }
    $Results|Out-File $OutputFile
    start $SourceFile.Directory

Ответы [ 2 ]

1 голос
/ 26 марта 2017

Я бы взглянул на язык R и RStudio. Он построен для статистического анализа больших наборов данных. Тонны и тонны библиотек.

1 голос
/ 16 апреля 2012
  • Вы должны проверить Google Refine (это загружаемое программное обеспечение, которое работает в вашем браузере).Это фантастическая работа по очистке грязных CSV-файлов.
  • csvstudio - это набор инструментов Python (и полное приложение CLI) для генерации статистики из CSV-файлов.

Но если вы действительно хотите серьезно относиться к интеллектуальному анализу данных, вам следует взглянуть на http://www.rdatamining.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...