3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DataFramesを用いたJuliaでのデータ分析(その1)

Posted at

Julia でのデータ分析

Juliaでのデータ分析をDataFrmaesを使用しながら使用方法について書いていきます.
なおversion1.5.0

#Pkgのインポート

import
using Pkg;
Pkg.add("DataFrames")
Pkg.add("CSV")
using DataFrames
using CSV

DataFrameの作成

JuliaDataFramespandasDataframeと同じくテーブル形式のエクセルのようなデータ構造を持ち,各列は数値型・文字列型・ブール型などの様々な型を保持できる.
作成方法は直接作成も出来るし,CSVなどから作成するなどの方法がある.

DataFrame作成
# 直接作成する
df = DataFrame(A = 1:4, B = ["M", "F", "F", "M"])

#dictionaryから作成する
data = Dict("A" => 1:4, "B" => ["M", "F", "F", "M"])
df = DataFrame(data)
# 4×2 DataFrame
 Row  A      B      
      Int64  String 
├─────┼───────┼────────┤
 1    1      M      
 2    2      F      
 3    3      F      
 4    4      M      

#順番をソートして読み込みたい場合
df_BA = DataFrame(data) |> df_ -> permutecols!(df_, [:B,:A]) # B→Aの順
# 4×2 DataFrame
 Row  B       A     
      String  Int64 
├─────┼────────┼───────┤
 1    M       1     
 2    F       2     
 3    F       3     
 4    M       4     

#JuliaのPipe演算子とlambda関数は
5 |> x -> x*3 #15
#のように|>と->で書ける

#CSVファイルから読み込み
df =  CSV.read("path/to/data.csv")

#データの構造

データへのアクセス

データへのアクセスは参照(データを直接参照するのでコピーしない)と
コピー(DataFrame内のデータをコピーする)する方法がある.
参照はdf.coldf."col"df[!, :col],df[!, "col"]
コピーはdf[:, :col], df[:, "col"]が該当する.
参照を使用する場合は参照値の変更がもとのDataframeに影響するので注意が必要.

DataFrameアクセス
df.A
df."A"
df[!, :A]
#どれも同じ
[1, 2, 3, 4]

A = df.A #参照
A[1] = -1
df # 値が変わってしまう.

# 4×2 DataFrame
 Row  A      B      
      Int64  String 
├─────┼───────┼────────┤
 1    -1     M      
 2    2      F      
 3    3      F      
 4    4      M      

# コピーを作成する場合
A = df[:, :A] #コピー
A[1] = 1 #もとに戻したつもり
df # コピーを作成しているので値はもとに戻らない

# 4×2 DataFrame
 Row  A      B      
      Int64  String 
├─────┼───────┼────────┤
 1    -1     M      
 2    2      F      
 3    3      F      
 4    4      M      

###データの追加・削除

  • 列データの追加
c = 3:6 #3,4,5,6
df.C = c #長さが既存のデータと一致する必要あり
# 4×3 DataFrame
 Row  A      B       C     
      Int64  String  Int64 
├─────┼───────┼────────┼───────┤
 1    -1     M       3     
 2    2      F       4     
 3    3      F       5     
 4    4      M       6     
  • 列データの削除
select!(df, Not(:B)) # !は破壊演算子(dfを書き換える)
df
# 4×2 DataFrame
 Row  A      C     
      Int64  Int64 
├─────┼───────┼───────┤
 1    -1     3     
 2    2      4     
 3    3      5     
 4    4      6     

#5. 列名・サイズなどの確認
DataFrameの列名はnames
縦横の数はsizeで取得

列名取得
names(df)
# ["A", "B"]

# 列名をSymbolとして取得する場合はpropertynamesを使用する
propertynames(df)
#[:A, :B]

# データの大きさを取得
size(df)
#(4, 2)
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?