1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 电影评分数据分析python_利用Python进行数据分析(1):第2章 url 电影评分 婴儿名...

电影评分数据分析python_利用Python进行数据分析(1):第2章 url 电影评分 婴儿名...

时间:2019-06-16 01:08:52

相关推荐

电影评分数据分析python_利用Python进行数据分析(1):第2章 url 电影评分 婴儿名...

偶像说,不在于广,而在于渊。

桢子姐姐也说,qcy,你为什么不继续做你的技术呢?…没想到你竟是这种人…(虽然不知道是神马意思…)

非常感谢身边有这种时刻提醒你“好自为之、警钟长鸣”的好朋友。

确实,越来越需要对已有的知识储备进行深挖。

准备毕业,从现在开始深入下去。

读一行行存储的JSON字符串文件(\n是文件换行,而不是以逗号分隔的csv)

import json

path = 'ch02/usagov_bitly_data-03-16-1331923249.txt'

records = [json.loads(line) for line in open(path)] # 一行为一个element,存入list

key in dict # key 是否在dict.keys()中

所谓的标准库

from collections import defaultdict

def get_counts2(sequence):

counts = defaultdict(int) # values will initialize to 0

for x in sequence:

counts[x] += 1

return counts

defaultdict(int), defaultdict(float), defaultdict(str),defaultdict(dict)

对dict的排序

把dict中的k,v生成tuple

l = [(k, v) for k, v in dict.items()][(k, d[k]) for k in dict.keys()] # 我喜欢这么写

l.sort() # 根据k排序 -_-!

用collections标准库

from collections import Counter

counts = Counter(time_zones)

counts.most_common(10)

x=np.array([1,4,3,-1,6,9])

x.argsort() # 返回从小到大的索引值

np.where(series.str.constains('表达式或正则表达式规则'), 'x', 'y') # np.where是,则输出'x',否则输出'y'

聚合 groupby , sum() # 每一类的个数

groupby('xxx') 需要区分:sum、count、size

sum:如果是数字,就加总

count:数数,每一列都数数(不知道nan会不会计入)

size:按'xxx'数数,每一类一共多少个。

对pandas的一列series计数

df['x'].value_counts()

pd.value_counts(df['x'], sort=False) # 计数完毕后,是否排序

unstack# 展开,不要透视

dataframe:pivot,pivot_table

pd.merge(df1, df2) # 尤其适用于3NF的数据库,主外键,合并到一张表里操作

pivot,经常是把按行存的,转成一列列的数据。

如:

时间

代码

价格

/3/1

601318

70

/3/1

601398

7

...

/3/10

601318

72

/3/10

601398

8

转成

601318

601398

/3/1

70

7

...

/3/10

72

8

...

pivot_table

例子:求电影平均得分

合并多个df,默认按行合并

pd.concat([df1, df2, df3], ignore_index=True) # 要去掉原来df中的index。

另一种做法是合并以后,reset_index

统计:每年出生的男生、女生人数

判断一个浮点数是否为1

print(np.allclose(1.0+1e-6,1))

print(1.0+1e-6 == 1)

print(1.0+1e-10 == 1)

两个df是否一致(尤其是浮点数)

assert Equal??

例:求男女比例(A[i, j] / sum(A[i, :]))。

对每一行进行归一化(非常常见的操作)

竖着除

横着除(很诡异!)

怎么解决?? 终于试出来了!

或者 更神奇的做法

列相加,再行去除

sort_values: 按某一列的值排序 (ascending可选)

sort_index: 按index排序(ascending可选)

关于数据分位数

1. 正找 --> 处于0.8的数是几

还可以选择插值法

interpolation(插值方法) :{‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’}

2. 反求 --> 0.11111 在什么位置

series.searchsorted(某个数) --> 返回在这个已经排序的series中的下标

dataframe的map

定义一个函数: f = lambda x: x*2

df['x'].map(f) # df['x'] =df['x'].apply(lambda x: x*2)

元素去重,且不改变顺序(用set,会改变顺序)

df['x'].unique() --> 即可

import numpy as np

A = [1, 2, 2, 3, 4, 3]

a = np.unique(A)

print a # 输出为 [1 2 3 4]

a, b, c = np.unique(A, return_index=True, return_inverse=True)

print a, b, c # 输出为 [1 2 3 4], [0 1 3 4], [0 1 1 2 3 2]

isin函数

场景:去掉df中的一些元素,若df['x'] 不等于 1 或 'a' 或 'qcy' 或 'lrx'。

isin, ~ isin

另外:

groupby,

merge & concat,

apply, map, applymap, lambda

...

好好学!

标准库!一定好好看API!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。