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

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    │

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351