数据清洗与可视化分析1

一曲冷凌霜 提交于 2020-01-21 00:25:18

来源:https://www.programmer-books.com/wp-content/uploads/2019/04/Python-for-Data-Analysis-2nd-Edition.pdf

Json 数据转换

os.chdir() 方法用于改变当前工作目录到指定的路径。
用法:os.chdir(path),path – 要切换到的新路径。如果允许访问返回 True , 否则返回False。
在这里插入图片描述
可见读取出来的json是乱码的,应该用以下方式读取:

records=[json.loads(line) for line in open(path)]
records[0]  

将文件的每一行以json文件格式读取,并存在列表里面。output显示:第一行数据是一个大的字典。字典的键是列名,值是读取的数据。

所用数据以表形式如下:

在这里插入图片描述

对timezone数据进行统计分析

抓取包含timezone的数据,加个if是防止有些行timezone数据不存在报错。
在这里插入图片描述

对timezone中数据进行分析

#way 1 to count the time zone
def get_counts(sequence):
    counts={}
    for x in sequence:
        if x in counts:
            counts[x]+=1
        else:
            counts[x]=1
    return counts

# *******************************************way2
from collections import defaultdict

def get_counts2(sequence):
    counts=default(int) # values will initialize to 0
    for x in sequence:
        counts[x] +=1
    return counts

built-in package collections 中的
defaultdict类的初始化函数接受一个类型作为参数,当所访问的键不存在的时候,可以实例化一个值作为默认值。int 为参数时默认值为0.

需要注意的是,这种形式的默认值只有在通过dict[key]或者dict.getitem(key)访问的时候才有效。
dict.setdefault函数
dict.setdefault(key, default_value)方法接收两个参数,第一个参数是键的名称,第二个参数是默认值。假如字典中不存在给定的键,则返回参数中提供的默认值;反之,则返回字典中保存的值。
例子:

strings = ('puppy', 'kitten', 'puppy', 'puppy',
           'weasel', 'puppy', 'kitten', 'puppy')
counts = {}

for kw in strings:
    counts[kw] = counts.setdefault(kw, 0) + 1

在这里插入图片描述

在这里插入图片描述

用collections 包中的 Counter类

# ************collection.Counter class
from collections import Counter
counts = Counter(time_zone1)
counts.most_common(10)

用pandas包中 Series obejct中的value_counts属性在这里插入图片描述进行计数

from pandas import DataFrame, Series
import pandas as pd
frame=DataFrame(records)
tz_series = frame['tz']
tz_counts = tz_series.value_counts()
tz_counts[:10]

在这里插入图片描述

缺失值异常值处理fillna

clean_tz = frame['tz'].fillna('Missing')
clean_tz[clean_tz=='']='Unknown'
tz_counts = clean_tz.value_counts()
tz_counts[:10]

America/New_York 1251
Unknown 521
America/Chicago 400
America/Los_Angeles 382
America/Denver 191
Missing 120
Europe/London 74
Asia/Tokyo 37
Pacific/Honolulu 36
Europe/Madrid 35
Name: tz, dtype: int64

数据可视化

tz_counts[:10].plot(kind='barh',rot=0)

在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!