Julia(juliaバージョン1.0.1)を使用して.CSVファイルデータからDateTimeを読み取るにはどうすればよいですか?ここで気付いた場合、データを読み込むと「文字列」値としてマークされますが、head()を呼び出すとデータ型としてDateTime値が表示されることを期待していました。
私はこのように読んでいます:
using Dates, CSV, DataFrames
dfmt = dateformat"yyyy-mm-dd hh:MM:ss"
column_types = Dict(:pickup_datetime=>DateTime, :dropoff_datetime=>DateTime)
df = convert(DataFrame, CSV.read("$(Base.source_dir())/small_taxi.csv",
types=column_types, dateformat=dfmt))
function reduce_dataframe(data_frame)
return data_frame[[:vendor_id, :pickup_datetime, :dropoff_datetime,
:passenger_count, :trip_distance]]
end
df = reduce_dataframe(df)
head(df)
これが私のプログラム出力です(タクシーデータから):
julia> include("hello.jl")
Started ...
elapsed CPU time: 0.09325 seconds
0.094642 seconds (548.85 k allocations: 10.445 MiB)
6×4 DataFrame
│ Row │ vendor_id │ pickup_datetime │ dropoff_datetime │ passenger_count │
│ │ Int64⍰ │ String⍰ │ String⍰ │ Int64⍰ │
├─────┼───────────┼─────────────────────┼─────────────────────┼─────────────────┤
│ 1 │ 1 │ 2017-01-01 01:21:25 │ 2017-01-01 01:51:56 │ 2 │
│ 2 │ 1 │ 2017-01-01 02:17:49 │ 2017-01-01 02:17:49 │ 3 │
│ 3 │ 1 │ 2017-01-01 02:30:02 │ 2017-01-01 02:52:56 │ 1 │
│ 4 │ 1 │ 2017-01-01 04:17:32 │ 2017-01-01 04:17:36 │ 1 │
│ 5 │ 1 │ 2017-01-01 04:41:54 │ 2017-01-01 05:24:22 │ 1 │
│ 6 │ 1 │ 2017-01-01 10:41:18 │ 2017-01-01 10:56:59 │ 2 │
ここでのトリックは何ですか?自分で試してみたい場合のサンプルデータは次のとおりです:https://gist.github.com/djangofan/09c6304b55f2a73cb05d0d2afc7902b1
このような変換の問題に直面した場合は、何が起こっているのかを理解するために少し低いレベルに進むのが最善です。
それで、私たちはあなたのテーブルからあなたの日時文字列を探すことから始めます
dt_str="2017-01-01 01:21:25"
フォーマット文字列でフォーマットできますか?
dfmt = dateformat"yyyy-MM-dd hh:mm:ss"
Date(dt_str,dfmt)
私たちが得ることを実行する
ERROR: ArgumentError: Unable to parse date time. Expected directive Delim( hh:) at char 11
ここで何かが正しくありません。マニュアルを参考にしましょう。マニュアルは、Dates.DateFormatとstdlib / Dates / test /io.jlにある多数の例を示しています。
何ヶ月、何時間、何秒も間違った文字を使用していることに気づきました。今テストします
dfmt = dateformat"yyyy-mm-dd HH:MM:SS"
Date(dt_str,dfmt)
今回はエラーなし!テーブルで試してみます
t_data=CSV.read("$(Base.source_dir())/small_taxi.csv", dateformat=dfmt) t_data[:vendor_id, :pickup_datetime, :dropoff_datetime, :passenger_count, :trip_distance]
我々が得る julia> t_data[[:vendor_id, :pickup_datetime, :dropoff_datetime, :passenger_count]] 5×4 DataFrame │ Row │ vendor_id │ pickup_datetime │ dropoff_datetime │ passenger_count │ │ │ Int64⍰ │ DateTime⍰ │ DateTime⍰ │ Int64⍰ │ ├─────┼───────────┼─────────────────────┼─────────────────────┼─────────────────┤ │ 1 │ 2 │ 2017-09-23T05:08:42 │ 2017-09-23T05:27:39 │ 6 │ │ 2 │ 1 │ 2017-07-14T19:07:38 │ 2017-07-14T19:54:17 │ 1 │ │ 3 │ 2 │ 2017-10-29T00:42:06 │ 2017-10-29T00:43:12 │ 2 │ │ 4 │ 2 │ 2017-10-02T20:38:17 │ 2017-10-02T21:13:09 │ 1 │ │ 5 │ 1 │ 2017-05-11T22:53:11 │ 2017-05-11T23:27:53 │ 2 │
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加