python 离散化与面元划分

# encoding=utf-8
import numpy as np
import pandas as pd

### 离散化与面元划分
# 1
ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]
bins = [18, 25, 35, 60, 100]
cats = pd.cut(ages, bins)
# print 'cats:=\n', cats
# print 'cats.labels:=\n', cats.codes
# print 'pd.value_counts(cats):=\n', pd.value_counts(cats)
#  设置开口位置
# print pd.cut(ages, [18, 26, 36, 61, 100], right=False)
# group_names = ['Youth', 'YoungAdult', 'MiddleAged', 'Senior']
# print pd.cut(ages, bins, labels=group_names)
data = np.random.rand(20)
# print 'data:=\n', data
# print pd.cut(data, 4, precision=2)
#  指定分位大小
# print 'pd.qcut:=\n', pd.qcut(data, [0, 0.1, 0.5, 0.9, 1.])
#  检测和过滤异常值
# 1
np.random.seed(12345)
data = pd.DataFrame(np.random.randn(1000, 4))
# print 'data:=\n', data
# print 'data.describe():=\n', data.describe()
col = data[3]
# print 'col:=\n', col
# print 'col[np.abs(col) > 3]:=\n', col[np.abs(col) > 3]

# print 'data[(np.abs(data) > 3).any(1)]:=\n', data[(np.abs(data) > 3).any(1)]
data[np.abs(data) > 3] = np.sign(data) * 3
# print data.describe()
### 排列与随机采样
# 1
df = pd.DataFrame(np.arange(5 * 4).reshape((5, 4)))
sampler = np.random.permutation(5)
# print 'sampler:=\n', sampler
# print 'df:=\n', df
# print 'df.take(sampler):=\n', df.take(sampler)
# 2
# print df.take(np.random.permutation(len(df))[:3])
# 3
bag = np.array([5, 7, -1, 6, 4])
sampler = np.random.randint(0, len(bag), size=10)
# print 'sampler:=\n', sampler
draws = bag.take(sampler)
# print 'draws:=\n', draws
### 计算指标与哑变量
# 1
df = pd.DataFrame({
    'key': ['b', 'b', 'a', 'c', 'a', 'b'],
    'data1': range(6)
})
# print 'df:=\n', df
# print 'pd.get_dummies(df[\'key\']):=\n', pd.get_dummies(df['key'])
# print 'pd.get_dummies(df[\'key\'])\n', pd.get_dummies(df['key'], prefix='key')
# 2
mnames = ['movie_id', 'title', 'genres']
# print 'mnames:=\n', mnames
movies = pd.read_table('data/movies.dat', sep='::', header=None, names=mnames, engine='python')
# print 'movies:=\n', movies
# print 'movies[:10]:=\n', movies[:10]
# print 'movies.genres:=\n', movies.genres
genre_iter = (set(x.split('|')) for x in movies.genres)
# print 'genre_iter:=\n', set.union(*genre_iter)
genres = sorted(set.union(*genre_iter))
# print 'genres:=\n', genres
# dummies = pd.DataFrame(np.zeros((len(movies), len(genres))), columns=genres)
# print 'dummies:=\n', dummies
# for i, gen in enumerate(movies.genres):
#     dummies.ix[i, gen.split('|')] = 1
# movies_windic = movies.join(dummies.add_prefix('Genre_'))
# print 'movies_windic:=\n', movies_windic[:10]
# print 'movies_windic.ix[0]:=\n', movies_windic.ix[0]

# 3
np.random.seed(12345)
values = np.random.rand(10)
# print values
bins = [0, 0.2, 0.4, 0.6, 0.8, 1]
print pd.get_dummies(pd.cut(values, bins))

print 'test'


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值