美文网首页
Julia 数据科学库应用 案例探索长笔记

Julia 数据科学库应用 案例探索长笔记

作者: 二方亨 | 来源:发表于2020-05-03 22:20 被阅读0次
    JuliaPro操作界面

    这是一篇使用Julia集成库对数据集做探索的长笔记,有想法随时更新.

    JuliaPro官方下载连接

    目前打算学习的库有:

    Queryverse:
    • Query:对标Python的pandas, R中的dplyr. 专注于对DataFrame对象的操作
    • CSV: File IO, 读写CSV文件
    StatsKit:
    • 提供了各种统计学&机器学习库
    Gadfly
    • 可视化库,对DataFrame对象很友好

    using Queryverse, StatsKit, Gadfly
    
    • 载入CSV数据集
    data = CSV.file("D:\\contest\\dianxin\\Train85p.csv") |> DataFrame
    

    最后面的 "|> DataFrame" 中 "|>" 是管道操作符,相当于R中的"%>%", 作用是将上一个语句的结果传递入下一个语句. "DataFrame"本来是函数"DataFrame()", 但用在管道操作符后不需要括号

    • 数据检视

    size()

    data |> size
    
    (3400, 20)
    

    3400条记录,20个变量

    show()

    data |> show
    
    3400×20 DataFrame. Omitted printing of 7 columns
    │ Row  │ id    │ state  │ account_length │ area_code │ phone_number │ international_plan │ voice_mail_plan │ number_vmail_messages │ total_day_minutes │ total_day_calls │ total_day_charge │ total_eve_minutes │ total_eve_calls │
    │      │ Int64 │ String │ Int64          │ Int64     │ String       │ String             │ String          │ Int64                 │ Float64           │ Int64           │ Float64          │ Float64           │ Int64           │
    ├──────┼───────┼────────┼────────────────┼───────────┼──────────────┼────────────────────┼─────────────────┼───────────────────────┼───────────────────┼─────────────────┼──────────────────┼───────────────────┼─────────────────┤
    │ 1    │ 3     │ NJ     │ 137            │ 415       │  358-1921    │  no                │  no             │ 0                     │ 243.4             │ 114             │ 41.38            │ 121.2             │ 110             │
    │ 2    │ 4     │ OH     │ 84             │ 408       │  375-9999    │  yes               │  no             │ 0                     │ 299.4             │ 71              │ 50.9             │ 61.9              │ 88              │
    │ 3    │ 5     │ OK     │ 75             │ 415       │  330-6626    │  yes               │  no             │ 0                     │ 166.7             │ 113             │ 28.34            │ 148.3             │ 122             │
    │ 4    │ 7     │ MA     │ 121            │ 510       │  355-9993    │  no                │  yes            │ 24                    │ 218.2             │ 88              │ 37.09            │ 348.5             │ 108             │
    │ 5    │ 10    │ WV     │ 141            │ 415       │  330-8173    │  yes               │  yes            │ 37                    │ 258.6             │ 84              │ 43.96            │ 222.0             │ 111             │
    │ 6    │ 12    │ RI     │ 74             │ 415       │  344-9403    │  no                │  no             │ 0                     │ 187.7             │ 127             │ 31.91            │ 163.4             │ 148             │
    ⋮
    │ 3394 │ 4989  │ WA     │ 80             │ 510       │  397-4475    │  no                │  no             │ 0                     │ 157.0             │ 101             │ 26.69            │ 208.8             │ 127             │
    │ 3395 │ 4990  │ MN     │ 150            │ 408       │  407-6315    │  no                │  no             │ 0                     │ 170.0             │ 115             │ 28.9             │ 162.7             │ 138             │
    │ 3396 │ 4991  │ ND     │ 140            │ 510       │  364-8203    │  no                │  no             │ 0                     │ 244.7             │ 115             │ 41.6             │ 258.6             │ 101             │
    │ 3397 │ 4992  │ AZ     │ 97             │ 510       │  410-3888    │  no                │  no             │ 0                     │ 252.6             │ 89              │ 42.94            │ 340.3             │ 91              │
    │ 3398 │ 4994  │ WV     │ 73             │ 408       │  411-9655    │  no                │  no             │ 0                     │ 177.9             │ 89              │ 30.24            │ 131.2             │ 82              │
    │ 3399 │ 4999  │ DC     │ 109            │ 510       │  394-2206    │  no                │  no             │ 0                     │ 188.8             │ 67              │ 32.1             │ 171.7             │ 92              │
    │ 3400 │ 5000  │ VT     │ 86             │ 415       │  373-8058    │  no                │  yes            │ 34                    │ 129.4             │ 102             │ 22.0             │ 267.1             │ 104             │
    

    show()函数会依据terminal窗口大小输出整洁的数据框

    describe()

    data |> describe |> print
    
    20×8 DataFrame
    │ Row │ variable              │ mean    │ min       │ median │ max       │ nunique │ nmissing │ eltype   │
    │     │ Symbol                │ Union…  │ Any       │ Union… │ Any       │ Union…  │ Nothing  │ DataType │
    ├─────┼───────────────────────┼─────────┼───────────┼────────┼───────────┼─────────┼──────────┼──────────┤
    │ 1   │ id                    │ 2492.52 │ 3         │ 2511.5 │ 5000      │         │          │ Int64    │
    │ 2   │ state                 │         │ AK        │        │ WY        │ 51      │          │ String   │
    │ 3   │ account_length        │ 99.965  │ 1         │ 100.0  │ 238       │         │          │ Int64    │
    │ 4   │ area_code             │ 437.247 │ 408       │ 415.0  │ 510       │         │          │ Int64    │
    │ 5   │ phone_number          │         │  327-1058 │        │  422-9831 │ 3400    │          │ String   │
    │ 6   │ international_plan    │         │  no       │        │  yes      │ 2       │          │ String   │
    │ 7   │ voice_mail_plan       │         │  no       │        │  yes      │ 2       │          │ String   │
    │ 8   │ number_vmail_messages │ 7.76235 │ 0         │ 0.0    │ 52        │         │          │ Int64    │
    │ 9   │ total_day_minutes     │ 181.006 │ 0.0       │ 180.6  │ 351.5     │         │          │ Float64  │
    │ 10  │ total_day_calls       │ 99.8018 │ 0         │ 100.0  │ 163       │         │          │ Int64    │
    │ 11  │ total_day_charge      │ 30.7716 │ 0.0       │ 30.7   │ 59.76     │         │          │ Float64  │
    │ 12  │ total_eve_minutes     │ 201.037 │ 22.3      │ 201.25 │ 363.7     │         │          │ Float64  │
    │ 13  │ total_eve_calls       │ 99.8253 │ 12        │ 100.0  │ 164       │         │          │ Int64    │
    │ 14  │ total_eve_charge      │ 17.0883 │ 1.9       │ 17.105 │ 30.91     │         │          │ Float64  │
    │ 15  │ total_night_minutes   │ 200.325 │ 23.2      │ 200.8  │ 381.6     │         │          │ Float64  │
    │ 16  │ total_night_calls     │ 99.735  │ 12        │ 100.0  │ 175       │         │          │ Int64    │
    │ 17  │ total_night_charge    │ 9.01475 │ 1.04      │ 9.04   │ 17.17     │         │          │ Float64  │
    │ 18  │ total_intl_minutes    │ 10.2966 │ 0.0       │ 10.3   │ 20.0      │         │          │ Float64  │
    │ 19  │ total_intl_calls      │ 4.47059 │ 0         │ 4.0    │ 19        │         │          │ Int64    │
    │ 20  │ total_intl_charge     │ 2.7806  │ 0.0       │ 2.78   │ 5.4       │         │          │ Float64  │
    

    describe函数会输出每个变量的:
    均值, 最小值, 中间值, 最大值, 唯一值数量, 缺失值数量, 变量类型


    输出各个州用户统计数量, 费用, 变异系数

    state = data |>
        @mutate(total_charge = _.total_day_charge + _.total_eve_charge + _.total_night_charge + _.total_intl_charge) |>
        @groupby(_.state) |>
        @map({state = key(_), 
            count = length(_),
            mean_charge = mean(_.total_charge),
            vari_charge = variation(_.total_charge)}) |>
        @orderby_descending(_.mean_charge) |>
        DataFrame
    
    state |> show
    
    51×4 DataFrame
    │ Row │ state  │ count │ mean_charge │ vari_charge │
    │     │ String │ Int64 │ Float64     │ Float64     │
    ├─────┼────────┼───────┼─────────────┼─────────────┤
    │ 1   │ KS     │ 73    │ 62.8116     │ 0.17163     │
    │ 2   │ NJ     │ 77    │ 62.0979     │ 0.186393    │
    │ 3   │ MD     │ 66    │ 62.0015     │ 0.169759    │
    │ 4   │ IN     │ 65    │ 61.6071     │ 0.167058    │
    │ 5   │ GA     │ 55    │ 61.4805     │ 0.158179    │
    │ 6   │ OH     │ 82    │ 61.0411     │ 0.167827    │
    ⋮
    │ 45  │ AZ     │ 61    │ 57.842      │ 0.183879    │
    │ 46  │ SC     │ 57    │ 57.7188     │ 0.212173    │
    │ 47  │ WI     │ 69    │ 57.6706     │ 0.197836    │
    │ 48  │ MO     │ 54    │ 57.5093     │ 0.208202    │
    │ 49  │ LA     │ 55    │ 57.4904     │ 0.148391    │
    │ 50  │ CO     │ 60    │ 57.4585     │ 0.189113    │
    │ 51  │ IL     │ 60    │ 57.3668     │ 0.174889    │
    

    以州为分组, 对各州的用户数, 平均总费用, 用户总费用变异系数进行聚合.
    结果显示:各州用户在州间平均总费用及州内各用户总费用差异并不大.

    相关文章

      网友评论

          本文标题:Julia 数据科学库应用 案例探索长笔记

          本文链接:https://www.haomeiwen.com/subject/xxyjghtx.html