投稿

4月, 2022の投稿を表示しています

julia で Microsoft Excel の xlsx 形式のファイルをダウンロードして dataframe で読み込む方法

わが国のお役所が大好きな xlsx 形式のファイルをダウンロードして、dataframe で読み込む方法です。 年度が代ったためか、CSV 形式でダウンロードができなくなったため、MS Excel のxlsx 形式で落してくる必要が生じました。 julia で xlsx 形式を扱う場合は、XLSX.jl を使うのが良さそうです。 残念ながら、XLSX.jl を使ってインタネット上のファイルをそのまま HTTP.get() で読めなかったため、HTTP.download() で保存してから読み込みます。 お役所のファイルは表題が A1 などに入って、さらに B2 以降などでセルが結合されて列名が階層化されていたりします。 XLSX.jl では、で丸ごと読んでくれますが、これを DataFrame にするには範囲の指定が必要です。 1回だけなら手書きでも良いですが、末尾のセル名が必要になるかもしれません。 XLSX.jl では、`[B3:end]` のような `end` 表記などは許してくれません。 正確なデータ範囲を知っている必要があります。 そこで、1回、xlsx ファイル全体を `[:]` で Matrix に変換してしまいましょう。 Matrix になっていれば、[3:end , 2:end] のように指定できるようになります。 恐らく、多くの DataFrames.jl 使いの方は、Matrix を挟む方が操作性が良いと考えます。 ダウンロード元と保存先、xlsx ファイルの構造などは下記のとおりとします。 downloadUrl : ダウンロードしたいファイルの url (string) localOutputFileName : ローカルに保存したいファイル名のパス (string) "Sheet1" : ダウンロードした xlsx ファイルの読み込みたいシートの名前 "Sheet1"の構造と読み込みたい範囲 : A1 に 表題があり、A4 から下最後まで、横は AからE の5列が読み込み対象 julia> using HTTP, XLSX , DataFrames julia> HTT...

julia で、ファイルをダウンロードして名前を付けて保存する方法

julia で、ファイルをダウンロードして名前を付けて保存する方法ですが、なぜか HTTP.jl に記載されていない 'HTTP.download' というのを使うのが良さそうです。 下記のような場合の例を挙げます。 downloadUrl : ダウンロードしたいファイルの url (string) localOutputFileName : ローカルに保存したいファイル名のパス (string) julia> using HTTP julia> HTTP.download( downloadUrl , localOutputFileName ) 以上です。シェルコマンド wget などを使う方法もありますが、ネイティブな命令の方がなにかと便利でしょう。