来源: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)
来源:CSDN
作者:TigerrrRose
链接:https://blog.csdn.net/TigerrrRose/article/details/104056073