CSV - zziuni/d3 GitHub Wiki

Wiki β–Έ API Reference β–Έ CSV

# d3.csv(url, callback)

값을 콀마둜 κ΅¬λΆ„ν•œ 파일(CSV)λ₯Ό HTTP GET으둜 url 에 μš”μ²­ν•œλ‹€. 파일 λ‚΄μš©μ€ RFC4180을 λ”°λ₯Έλ‹€κ³  κ°€μ •ν•œλ‹€. μš”μ²­ mime νƒ€μž…μ€ "text/csv"이닀. μš”μ²­μ΄ λΉ„λ™κΈ°λ‘œ μΌμ–΄λ‚˜λ―€λ‘œ μš”μ²­μ΄ μΌμ–΄λ‚œ 후에 λ°”λ‘œ λ©”μ„œλ“œκ°€ λ°˜ν•œλœλ‹€. CSV 데이터가 μ‚¬μš©κ°€λŠ₯해지면 callback κ°€ νŒŒμ‹±λœ 열듀을 μ „λ‹¬μΈμžλ‘œ λ°›μ•„μ„œ ν˜ΈμΆœλœλ‹€. μ—λŸ¬κ°€ λ°œμƒν•˜λ©΄ μ½œλ°±ν•¨μˆ˜λŠ” null을 인자둜 λ°›μ•„μ„œ ν˜ΈμΆœλœλ‹€.

# d3.csv.parse(string)

CSV 파일의 λ‚΄μš©μ— ν•΄λ‹Ήν•˜λŠ” string 을 νŒŒμ‹±ν•΄μ„œ 객체에 μ—΄ λ³„λ‘œ 담은 배열을 λ°˜ν™˜ν•œλ‹€. μ „λ‹¬μΈμžμ˜ λ¬Έμžμ—΄μ€ RFC4180λ₯Ό λ”°λ₯Έλ‹€κ³  κ°€μ •ν•œλ‹€. parseRows λ©”μ„œλ“œμ™€ 달리 이 λ©”μ„œλ“œλŠ” CSV 파일의 첫 쀄이 콀마둜 κ΅¬λΆ„λœ 컬럼λͺ…이여야 ν•œλ‹€. κ·Έλž˜μ•Ό κ·Έ 컬럼λͺ…이 λ°˜ν™˜ 객체의 속성λͺ…이 λœλ‹€. 예λ₯Ό λ“€μ–΄ λ‹€μŒκ°™μ€ CSV 파일의 경우.

Year,Make,Model,Length
1997,Ford,E350,2.34
2000,Mercury,Cougar,2.38

κ²°κ³Ό 배열은 λ‹€μŒκ³Ό κ°™λ‹€.

[
  {"Year": "1997", "Make": "Ford", "Model": "E350", "Length": "2.34"},
  {"Year": "2000", "Make": "Mercury", "Model": "Cougar", "Length": "2.38"}
]

μ£Όμ˜ν• μ μ€ 값은 항상 λ¬Έμžμ—΄μ΄λ©° μžλ™μœΌλ‘œ 숫자둜 λ³€ν™˜λ˜μ§€ μ•ŠλŠ”λ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μžλ™μœΌλ‘œ λ¬Έμžμ—΄μ„ 숫자둜 κ°•μ œν•  수 μžˆλ‹€. (예λ₯Ό λ“€μ–΄, + μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ„œ) μ•„λ‹ˆλ©΄ λ‹€μŒμ²˜λŸΌ λ°˜ν™˜ 객체λ₯Ό μˆœνšŒν•˜λ©° λ¬Έμžμ—΄μ„ 숫자둜 λ³€ν™˜ν•΄μ•Ό ν•œλ‹€.

rows.forEach(function(o) {
  o.Year = parseInt(o.Year);
  o.Length = parseFloat(o.Length);
});

일반적으둜 parseIntλ‚˜ parseFloat 보닀 + μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ 더 λΉ λ₯΄λ‹€. 비둝 쒀더 μ œν•œμ μ΄κΈ΄ ν•˜μ§€λ§Œ. 예λ₯Ό λ“€μ–΄ "30px"의 숫자 λ³€κ²½μ‹œλ„λ₯Ό ν•  λ•Œ, parseInt와 parseFloatκ°€ 30을 λ°˜ν™˜ν•˜λŠ” 데 λ°˜ν•΄μ„œ + μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ NaN을 λ°˜ν™˜ν•œλ‹€.

# d3.csv.parseRows(string[, accessor])

CSV 파일의 λ‚΄μš©μ— ν•΄λ‹Ήν•˜λŠ” string 을 νŒŒμ‹±ν•΄μ„œ μ—΄ λ³„λ‘œ 담은 λ°°μ—΄μ˜ 배열을 λ°˜ν™˜ν•œλ‹€. 이 λ¬Έμžμ—΄μ€ RFC4180-compliantλ₯Ό λ”°λ₯Έλ‹€κ³  κ°€μ •ν•œλ‹€. parseμ™€λŠ” 달리 이 λ©”μ„œλ“œλŠ” 첫 라인을 데이터 라인으둜 닀룬닀. κ·ΈλŸ¬λ―€λ‘œ 해더가 μ—†λŠ” CSV νŒŒμΌμ„ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. 각 열은 객체가 μ•„λ‹Œ λ°°μ—΄λ‘œ ν‘œν˜„λ˜λ―€λ‘œ length λ³€μˆ˜κ°€ μžˆλ‹€. 예λ₯Ό λ“€μ–΄ λ‹€μŒ CSV νŒŒμΌμ„ 보면

1997,Ford,E350,2.34
2000,Mercury,Cougar,2.38

κ²°κ³Όκ°’ λ°°μ—΄ 은 μ•„λž˜μ™€ κ°™λ‹€.

[
  ["1997", "Ford", "E350", "2.34"],
  ["2000", "Mercury", "Cougar", "2.38"]
]

결과의 값은 μ–Έμ œλ‚˜ λ¬Έμžμ—΄μ΄λ‹€. μžλ™μœΌλ‘œ 숫자둜 λ³€ν™˜λ˜μ§€ μ•ŠλŠ”λ‹€. μžμ„Έν•œ λ‚΄μš©μ€ parseλ₯Ό μ°Έκ³ ν•˜λΌ.

두 번째 μ „λ‹¬μΈμžλŠ” μ˜΅μ…˜ 인자인 accessor ν•¨μˆ˜λ‹€. 이 ν•¨μˆ˜λŠ” ν•΄λ‹Ή μ—΄κ³Ό 색인 인자 두 개λ₯Ό 가지고 CSV 파일의 각 μ—΄λ³„λ‘œ ν˜ΈμΆœλœλ‹€. ν•¨μˆ˜μ˜ λ°˜ν™˜ 값은 λ°˜ν™˜ 데이터 μ—΄ λ°°μ—΄μ˜ μ›μ†Œλ₯Ό κ΅μ±„ν•œλ‹€. ν•¨μˆ˜κ°€ nullλ₯Ό λ°˜ν™˜ν•˜λ©΄ κ·Έ 열은 λ°˜ν™˜ 데이터 μ—΄ λ°°μ—΄μ—μ„œ μ œκ±°λœλ‹€. 이런 λ©΄μ—μ„œ accessorλŠ” λ°˜ν™˜ 데이터 열에 mapκ³Ό filter μ—°μ‚°μžλ₯Ό μ μš©ν•˜λŠ” μž‘μ—…κ³Ό μœ μ‚¬ν•˜λ‹€. accessor ν•¨μˆ˜λŠ” 속성λͺ…이 μžˆλŠ” 객체둜 각 열을 λ³€ν™˜ν•˜κΈ° μœ„ν•΄μ„œ parseλ₯Ό μ‚¬μš©ν•  λ•Œ μ‚¬μš©λœλ‹€.

# d3.csv.format(rows)

콀마둜 κ΅¬λΆ„λœ κ°’ ν˜•νƒœμ˜ λ¬Έμžμ—΄λ‘œ λ°°μ—΄ rows λ₯Ό λ³€ν™˜ν•΄μ„œ λ°˜ν™˜ν•œλ‹€. 이 μ—°μ‚°μžλ₯Ό parseRows의 λ°˜λŒ€λ‘œ λ™μž‘ν•œλ‹€. 각 열은 κ°œν–‰((\n)으둜 κ΅¬λΆ„λ˜κ³  열별 각 행은 콀마(,)둜 κ΅¬λΆ„λœλ‹€. μ½€λ§ˆλ‚˜ μŒλ”°μ˜΄ν‘œ("), κ°œν–‰μ΄ ν¬ν•¨λœ 값은 μŒλ”°μ˜΄ν‘œλ₯Ό μ‚¬μš©ν•΄μ„œ 문제λ₯Ό μš°νšŒν•œλ‹€.

TSV

# d3.tsv(url, callback)

d3.csvλ₯Ό μ°Έμ‘°ν•˜λΌ.

# d3.tsv.parse(string)

csv.parseλ₯Ό μ°Έμ‘°ν•˜λΌ.

# d3.tsv.parseRows(string[, accessor])

csv.parseRowsλ₯Ό μ°Έμ‘°ν•˜λΌ.

# d3.tsv.format(rows)

csv.formatλ₯Ό μ°Έμ‘°ν•˜λΌ.

⚠️ **GitHub.com Fallback** ⚠️