Python处理json数据

2019-03-20  本文已影响0人  司马山哥

1.json模块介绍

Json 模块提供了四个方法: dumps、dump、loads、load
详情参见https://www.cnblogs.com/tjuyuan/p/6795860.html

2 json文件读取

user = open("user.json", encoding="utf-8").read()
userDict = json.loads(user)

userDict为字典格式的文件,通过字典操作读取字段值。

3 创建数据框DataFrame,便于保存为csv文件

CallCount = pd.DataFrame(
    columns=['date_time', 'total_call_count', 'domestic_calls', 'local', 'called', 'dialing', 'max_time',
             'max_time_number','frequently_number','frequently_number_calls'])

4 数据抽取并统计字段

for item in userDict["task_data"]["call_info"]:
    date_time = item["call_cycle"]
    total_call_count = item["total_call_count"]
    CallLandType = {}
    CallTypeName = {}
    CallTime = []
    CallOtherNumber = {}
    for call in item["call_record"]:
        call_land_type = call["call_land_type"]
        call_type_name = call["call_type_name"]
        call_time = call["call_time"]
        call_other_number = call["call_other_number"]

        CallLandType[call_land_type] = CallLandType.get(call_land_type, 0) + 1
        CallTypeName[call_type_name] = CallTypeName.get(call_type_name, 0) + 1
        CallTime.append(call_time)
        CallOtherNumber[call_other_number] = CallOtherNumber.get(call_other_number, 0) + 1

    MaxTime = max(CallTime)
    MaxTimeNumber = item["call_record"][CallTime.index(MaxTime)]["call_other_number"]
    FrequentlyNumber = max(CallOtherNumber, key=CallOtherNumber.get)
    FrequentlyNumberCalls = CallOtherNumber[FrequentlyNumber]

5 数据保存

    result = np.array([date_time, total_call_count, CallLandType['国内长途'], CallLandType['本地通话'], CallTypeName['被叫'],
                       CallTypeName['主叫'],MaxTime,MaxTimeNumber,FrequentlyNumber,FrequentlyNumberCalls])
    CallCount.loc[count] = result
    count = count + 1

CallCount.to_csv("callcount.csv",index=False,sep=',')

注释:CSV2JSON

#-*- coding:utf-8 -*-

import os
import os.path
import csv
rootdir = "/Users/ying/Documents"     # folder stores csv files

for parent,dirnames,filenames in os.walk(rootdir):
    for filename in filenames:
        abs_path = os.path.join(parent,filename)
        if ".csv" in abs_path:
            print abs_path
            #对每个文件进行处理
            with open(abs_path, 'rb') as csvfile:
                reader = csv.reader(csvfile)
                rows = [row for row in reader]
                header = rows[0]
                for rowOne in rows[1:]:
                    json_row = {}
                    for i in range(0,len(rowOne)):
                        json_row[header[i]] = rowOne[i]
                    print json_row

注:更改csv存储的文件夹地址,即可方便的将csv转成Python

上一篇 下一篇

猜你喜欢

热点阅读