分析CSV文件以查找趋势或异常

时间:2012-03-20 23:06:26

标签: powershell csv

我经常面对数据(电子表格,配置等)我必须分析以尝试找出可能导致事情发生的原因。有时是好事,但通常是坏事,而且往往是我以前从未看过的数据,而且可能一般都不熟悉。

我尝试寻找一种高级分析工具,这种工具可以查找重复的短语或其他可能更容易理解数据趋势但却找不到任何内容的东西。

我发帖有两个原因

  • 我希望对可以进行此类分析的某种软件提出建议
  • 我写了一个执行非常基本的分析的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 个答案:

答案 0 :(得分:1)

  • 您应该查看Google Refine(这是在您的浏览器中运行的可下载软件)。它可以很好地清理凌乱的CSV文件。
  • csvstudio是一组Python工具(以及一个完整的CLI应用程序),用于生成CSV文件的统计信息。

但如果你真的想要认真对待数据挖掘,你应该看看http://www.rdatamining.com/

答案 1 :(得分:1)

我会看一下R语言和RStudio。它用于对大型数据集进行统计分析。吨和吨图书馆。