Giới thiệu về JSON

Nạp dữ liệu gọn nhẹ với pandas

Amany Mahfouz

Instructor

Javascript Object Notation (JSON)

  • Định dạng dữ liệu web phổ biến
  • Không phải dạng bảng
    • Bản ghi không cần có cùng tập thuộc tính
  • Dữ liệu tổ chức thành các collection đối tượng
  • Đối tượng là các cặp thuộc tính-giá trị
  • JSON lồng nhau: đối tượng trong đối tượng
Nạp dữ liệu gọn nhẹ với pandas

Đọc dữ liệu JSON

  • read_json()
    • Nhận đường dẫn chuỗi tới JSON hoặc dữ liệu JSON dạng chuỗi
    • Chỉ định kiểu dữ liệu với tham số dtype
    • Tham số orient để đánh dấu bố cục JSON không phổ biến
      • giá trị có thể xem trong tài liệu pandas
Nạp dữ liệu gọn nhẹ với pandas

Hướng dữ liệu (orientation)

  • Dữ liệu JSON không phải dạng bảng
    • pandas suy luận cách xếp vào bảng
  • pandas tự xử lý các orientation thường gặp
Nạp dữ liệu gọn nhẹ với pandas

Hướng record

  • Bố cục JSON phổ biến nhất
    [
      {
          "age_adjusted_death_rate": "7.6",
          "death_rate": "6.2",
          "deaths": "32",
          "leading_cause": "Accidents Except Drug Posioning (V01-X39, X43, X45-X59, Y85-Y86)",
          "race_ethnicity": "Asian and Pacific Islander",
          "sex": "F",
          "year": "2007"
      },
      {
          "age_adjusted_death_rate": "8.1",
          "death_rate": "8.3",
          "deaths": "87",
          ...
    
Nạp dữ liệu gọn nhẹ với pandas

Hướng cột

  • Tiết kiệm chỗ hơn so với JSON hướng record
    {
      "age_adjusted_death_rate": {
          "0": "7.6",
          "1": "8.1",
          "2": "7.1",
          "3": ".",
          "4": ".",
          "5": "7.3",
          "6": "13",
          "7": "20.6",
          "8": "17.4",
          "9": ".",
          "10": ".",
          "11": "19.8",
          ...
    
Nạp dữ liệu gọn nhẹ với pandas

Chỉ định orientation

  • Dữ liệu hướng "split" - nyc_death_causes.json
    {
      "columns": [
          "age_adjusted_death_rate",
          "death_rate",
          "deaths",
          "leading_cause",
          "race_ethnicity",
          "sex",
          "year"
      ],
      "index": [...],
      "data": [
          [
              "7.6",
    
Nạp dữ liệu gọn nhẹ với pandas

Chỉ định orientation

import pandas as pd

death_causes = pd.read_json("nyc_death_causes.json", orient="split")
print(death_causes.head())
  age_adjusted_death_rate death_rate deaths             leading_cause              race_ethnicity sex  year
0                     7.6        6.2     32  Accidents Except Drug...  Asian and Pacific Islander   F  2007
1                     8.1        8.3     87  Accidents Except Drug...          Black Non-Hispanic   F  2007
2                     7.1        6.1     71  Accidents Except Drug...                    Hispanic   F  2007
3                       .          .      .  Accidents Except Drug...          Not Stated/Unknown   F  2007
4                       .          .      .  Accidents Except Drug...       Other Race/ Ethnicity   F  2007

[5 rows x 7 columns]
Nạp dữ liệu gọn nhẹ với pandas

Vamos praticar!

Nạp dữ liệu gọn nhẹ với pandas

Preparing Video For Download...