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

2020-05-03  本文已影响0人  二方亨
JuliaPro操作界面

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

JuliaPro官方下载连接

目前打算学习的库有:

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

using Queryverse, StatsKit, Gadfly
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    │

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

上一篇下一篇

猜你喜欢

热点阅读