将JSON导入pandas dataframe错误

时间:2018-06-10 04:40:33

标签: python json python-3.x pandas dataframe

我有一个JSON文件如下。我想将其导入为pandas dataframe。我的数据是从MySQL工作台导出的。

[
  {
    "id" : 1,
    "reviewer_id" : 5,
    "reviewed_date" : "2010-07-25 21:47:40",
    "description" : "วันนี้  ผมพาท่านผู้อ่านมาลิ้มลองสเต๊กราคาย่อมเยาว์ แถวย่านพัฒนาการกันนะครับ\r\nร้าน Bkk Steak ที่พัฒนาการ 61 นี้ เปิดเมื่อปี 2551 ตอนนั้นยังเป็นห้องแถวห้องเดียว ไม่มีแอร์ด้วย จำได้ว่าที่ผมไปกินครั้งแรก ร้านบอกว่าเปิดถึงเที่ยงคืน!  (จะว่าไปก็ การกินของหนักๆ อย่างสเต๊กในเวลาดึกดื่นขนาดนี้ ไม่เป็นผลดีต่อสุขภาพแน่ๆ)  หลังๆ จึงร่นระยะเวลามาเปิดถึง 4 ทุ่มครึ่งแทน (ก็ยังดึกอยู่ดี) ด้วยรสชาติอาหารที่ดี ในราคาที่ถือว่าคุ้มค่ามาก (เริ่มต้นที่ 69 บาท) ทำให้มีลูกค้ามาทานอย่างต่อเนื่อง และภายในเวลาไม่ถึงปี ร้าน Bkk Steak ก็ย้ายจากห้องแถวเดิม ไปเปิดใหม่เป็นห้องแถว 2 คูหาฝั่งตรงข้ามแทน\r\n\r\nโฉมใหม่ของ Bkk Steak คือร้าน 2 คูหา ติดแอร์ แต่งร้านแบบเรียบง่าย ดูโปร่งและสะอาดตา รอบๆ ร้านมีภาพของสเต๊กเมนูต่างๆ พนักงานต้อนรับส่วนใหญ่เป็นผู้ชายครับ\r\n\r\nรายการอาหารในเมนูมีภาพประกอบเกือบทั้งหมด เริ่มต้นจากออเดิร์ฟเช่น ซุปครีมเห็ด (25 บาท)  กุ้งทอดสอดไส้ชีส (59 บาท) และสลัดทูน่า (49 บาท)  ส่วนพระเอกที่เป็นสเต๊กนั้นก็มีตั้งแต่สเต๊กหมูพริกไทยดำ  สเต๊กไก่สไปซี่ (ราคา 69 บาททั้งคู่)  ฟิชแอนด์ชิพส์  สเต๊กปลาดอลลี่ (79 บาท) ไปจนถึงจานที่ราคาแพงสุดของร้านคือ Steak T-Bone (589 บาท)  และแน่นอน ทางร้านมี combo set สเต๊ก 2 ชิ้นราคา 109/119 บาท หรือแบบ 4 ชิ้นในราคา 209/219 บาท ครับ \r\n\r\nผมสั่งเสต๊กไก่สไปซี่ อาหารจานโปรดของผม เพราะร้านเข้าให้ไก่ชิ้นใหญ่ดี ไก่หมักออกมกำลังดี รสชาติก็ไม่ถึงกับจัดจ้านมาก (คงต้องเผื่อไว้สำหรับคนกินเผ็ดมากไม่ได้) แต่กลิ่นที่หอมฉุยและเนื้อไก่นุ่มๆ นี่แหละที่ผมติดใจนัก  มีขนมปังอบเนย สลัดหย่อมเล็กๆ และเฟร้นช์ฟรายเป็นเครื่องเคียง ปิดท้ายด้วยเป๊บซี่เย็นๆ อีกหนึ่งแก้วก็อิ่มอร่อยไปอย่างสบายกระเป๋าครับ\r\n\r\nเยี่ยมร้านเมื่อ จันทร์ที่ 19 ก.ค. 2553  19.20 น.\r\nจำนวนแขก\t30 คน  (50% ของ capacity)\r\nจำนวนพนักงานเสิร์ฟ 5 คน\t\r\nเวลาที่ใช้รออาหารจานแรก 11 นาที\r\nอาหารที่สั่ง สเต๊กไก่สไปซี่ + โค้ก\r\nจ่ายไป 90 บาท\r\n\r\nจุดขาย ราคาและการบริการ\r\n\r\nหนึ่งเรื่องประทับใจ\tเวลาแขกผลักประตูเข้ามาในร้าน พนักงานทุกคนจะกล่าวสวัสดีทักทายแขกว่า “หวัดดีค้าบ ขอเชิญค้าบ” ได้อารมณ์คล้ายๆ กับ 7-11 เลยทีเดียว\t\r\n\r\nหนึ่งเรื่องที่อยากให้เปลี่ยน\tถ้าร้านให้เฟรนช์ฟรายเยอะกว่านี้จะดีมาก (อาจจะเป็น option พิเศษเพิ่มเงิน 10 บาทอะไรอย่างนี้น่ะครับ)\r\n\r\n",
    "rating" : 4
  },
  { 
    "id" : 2,
    "reviewer_id" : 5,
    "reviewed_date" : "2010-07-31 15:00:26",
    "description" : "ร้านคิวซังราเมน เป็นร้านขายราเมนญี่ปุ่นที่ถุกที่สุดที่ผมเคยได้ไปเยี่ยมเยือนครับ\r\n\r\nการเดินทางก็ค่อนข้างสะดวก เข้าซอยพัฒนาการ 61 มาประมาณ 50 เมตรก่อนถึงป้อมยามก็จะเจอร้านคิวซังอยู่ด้านซ้ายมือ\r\n\r\nภายในร้านตกแต่งเรียบง่าย จุแขกได้ประมาณ 30 คน แอร์เย็นฉ่ำดี\r\n\r\nอาหารจานโปรดของผมก็คือ คิวซังราเมน ชื่อเดียวกับร้านนั่นเอง ราคา 59 บาท ทีเด็ดของคิวซังราเมน คือน้ำซุปที่รสชาติกลมกล่อมเอามากๆ ไม่ต้องปรุงอะไรก็อร่อยทานได้ทันที แต่ถ้าชอบรสเผ็ดๆ หน่อยอย่างผมก็ใส่พริกป่นไปซักหนึ่งช้อนชาก็เรียบร้อยพร้อมทาน\r\n\r\nเคยไปกินราเมนร้านอื่น ชามเหยียบสองร้อย ผมว่ารสชาติก็สู้คิวซังราเมนไม่ได้ (หรือว่าลิ้นผมมันไม่ไฮโซพอหว่า)\r\n\r\nยังไง ถ้าอยากได้ทานราเมนเงียบๆ ราคาสบายกระเป๋า ก็มาลิ้มลองได้เลยครับ มีเมนู ราเมนร่วมสิบกว่าเมนู แล้วก็มีอาหารทานเล่นพวกเกี๋ยวซ่า ไก่คาราเกะ ยำสาหร่ายซึ่งรสชาติก็สอบผ่านทุกจานอยู่แล้วครับ\r\n",
    "rating" : 4
  }
]

注意:说明字段中的文字是泰语。

我运行了以下代码。

data = pd.read_json("data/review.json",encoding="utf-8")

输出:" ValueError:预期的对象或值"

data = pd.read_json("data/review.json",encoding="utf-8",orient='records',lines=True)

输出:" ValueError:预期的对象或值"

pd.read_json("data/review.json",encoding="utf-8",lines=True,chucksize=1000)

输出: TypeError:read_json()得到了一个意外的关键字参数' chucksize' "

with open('data/review.json',encoding="utf8") as f:
     data = json.loads(f.read())
     data = pd.DataFrame(data)

输出" JSONDecodeError:控制字符无效:第2110232行206"

with open('data/review.json',encoding="utf8") as f:
     data = json.loads(f.read(),strict=False)
     data = pd.DataFrame(data)

输出" JSONDecodeError:期望值:第16591251行第1行(字符544624441)"

如何将此JSON导入pandas?

注意:我的pandas版本是0.23.0。

参考文献:

1 个答案:

答案 0 :(得分:0)

尝试一下。这对我有用。

import pandas as pd
# Load the first sheet of the JSON file into a data frame
data_df = pd.read_json('reviewsclean.json', lines=True)