数据清洗和准备1

#数据清洗和准备
import pandas as pd
import numpy as np
#处理缺失值
string_data = pd.Series(['aardvark','artwdfv',np.nan,'asdfaa'])
string_data
0    aardvark
1     artwdfv
2         NaN
3      asdfaa
dtype: object
string_data.isnull()
0    False
1    False
2     True
3    False
dtype: bool
string_data[0] = None
string_data.isnull()
0     True
1    False
2     True
3    False
dtype: bool
#缺失数据处理
#滤除缺失数据
#dropna返回一个仅含非空数据和索引值的Series:
from numpy import nan as NA
data = pd.Series([1,NA,3,4,NA,7])
data.dropna()
0    1.0
2    3.0
3    4.0
5    7.0
dtype: float64
data[data.notnull()]
0    1.0
2    3.0
3    4.0
5    7.0
dtype: float64
#对于DataFrame对象,dropna默认丢弃任何含有缺失值的行
data = pd.DataFrame([[1., 6.5, 3.], [1., NA, NA],
                      [NA, NA, NA], [NA, 6.5, 3.]])
cleaned = data.dropna()
data
012
01.06.53.0
11.0NaNNaN
2NaNNaNNaN
3NaN6.53.0
cleaned
012
01.06.53.0
#传入how='all'将只丢弃全为NA的那些行
data.dropna(how='all')
012
01.06.53.0
11.0NaNNaN
3NaN6.53.0
data[4] = NA
data
0124
01.06.53.0NaN
11.0NaNNaNNaN
2NaNNaNNaNNaN
3NaN6.53.0NaN
data.dropna(axis=1,how='all')  #指定列
012
01.06.53.0
11.0NaNNaN
2NaNNaNNaN
3NaN6.53.0
df = pd.DataFrame(np.random.randn(7,3))
df.iloc[:4,1] = NA
df.iloc[:2,2] = NA
df
012
00.468787NaNNaN
10.903261NaNNaN
21.453601NaN1.693059
31.053961NaN-0.147527
40.4058671.042093-1.693640
5-0.416778-0.8024662.841372
60.348987-1.5856320.061224
df.dropna()
012
40.4058671.042093-1.693640
5-0.416778-0.8024662.841372
60.348987-1.5856320.061224
df.dropna(thresh=2)#thresh=N要求一列至少具有N非NaN才能存活
012
21.453601NaN1.693059
31.053961NaN-0.147527
40.4058671.042093-1.693640
5-0.416778-0.8024662.841372
60.348987-1.5856320.061224
#填充缺失数据 fillna
df.fillna(0)
012
00.4687870.0000000.000000
10.9032610.0000000.000000
21.4536010.0000001.693059
31.0539610.000000-0.147527
40.4058671.042093-1.693640
5-0.416778-0.8024662.841372
60.348987-1.5856320.061224
df.fillna({1:0,2:0.5})
012
00.4687870.0000000.500000
10.9032610.0000000.500000
21.4536010.0000001.693059
31.0539610.000000-0.147527
40.4058671.042093-1.693640
5-0.416778-0.8024662.841372
60.348987-1.5856320.061224
_ = df.fillna(0,inplace=True)#对现有对象进行就地修改
df
012
00.4687870.0000000.000000
10.9032610.0000000.000000
21.4536010.0000001.693059
31.0539610.000000-0.147527
40.4058671.042093-1.693640
5-0.416778-0.8024662.841372
60.348987-1.5856320.061224
df = pd.DataFrame(np.random.randn(6,3))
df.iloc[2:,1] = NA
df.iloc[4:,2] = NA
df
012
01.8131822.1183170.654455
10.4041480.387881-0.082305
20.841433NaN-0.922404
3-0.569958NaN1.136830
41.007093NaNNaN
51.725698NaNNaN
df.fillna(method='ffill') #对reindexing有效的那些插值方法也可用于fillna
012
01.8131822.1183170.654455
10.4041480.387881-0.082305
20.8414330.387881-0.922404
3-0.5699580.3878811.136830
41.0070930.3878811.136830
51.7256980.3878811.136830
#数据转换
#移除重复数据
data = data = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],
                            'k2': [1, 1, 2, 3, 3, 4, 4]})
data
k1k2
0one1
1two1
2one2
3two3
4one3
5two4
6two4
data.duplicated()
0    False
1    False
2    False
3    False
4    False
5    False
6     True
dtype: bool
data.drop_duplicates()
k1k2
0one1
1two1
2one2
3two3
4one3
5two4
data['v1'] = range(7)
data.drop_duplicates(['k1'])
k1k2v1
0one10
1two11
data.drop_duplicates(['k1','k2'],keep='last')#传入keep='last'则保留最后一个:
k1k2v1
0one10
1two11
2one22
3two33
4one34
6two46
#利用函数或映射进行数据转换
data = pd.DataFrame({'food': ['bacon', 'pulled pork', 'bacon',
                                  'Pastrami', 'corned beef', 'Bacon',
                                  'pastrami', 'honey ham', 'nova lox'],
                         'ounces': [4, 3, 12, 6, 7.5, 8, 3, 5, 6]})

data
foodounces
0bacon4.0
1pulled pork3.0
2bacon12.0
3Pastrami6.0
4corned beef7.5
5Bacon8.0
6pastrami3.0
7honey ham5.0
8nova lox6.0
meat_to_animal = {
     'bacon': 'pig',
  'pulled pork': 'pig',
  'pastrami': 'cow',
  'corned beef': 'cow',
  'honey ham': 'pig',
  'nova lox': 'salmon'   
}
lowercased = data['food'].str.lower()
lowercased
0          bacon
1    pulled pork
2          bacon
3       pastrami
4    corned beef
5          bacon
6       pastrami
7      honey ham
8       nova lox
Name: food, dtype: object
data['animal'] = lowercased.map(meat_to_animal)#Series的map方法可以接受一个函数或含有映射关系的字典型对象
data
foodouncesanimal
0bacon4.0pig
1pulled pork3.0pig
2bacon12.0pig
3Pastrami6.0cow
4corned beef7.5cow
5Bacon8.0pig
6pastrami3.0cow
7honey ham5.0pig
8nova lox6.0salmon
data['food'].map(lambda x :meat_to_animal[x.lower()])
0       pig
1       pig
2       pig
3       cow
4       cow
5       pig
6       cow
7       pig
8    salmon
Name: food, dtype: object
#替换值
data = pd.Series([1,-999,2,-999,-1000,3])
data
0       1
1    -999
2       2
3    -999
4   -1000
5       3
dtype: int64
data.replace(-999,np.nan)
0       1.0
1       NaN
2       2.0
3       NaN
4   -1000.0
5       3.0
dtype: float64
data.replace([-999,-1000],np.nan)
0    1.0
1    NaN
2    2.0
3    NaN
4    NaN
5    3.0
dtype: float64
data.replace({-999:np.nan,-1000:0})
0    1.0
1    NaN
2    2.0
3    NaN
4    0.0
5    3.0
dtype: float64
#重命名轴索引
data = pd.DataFrame(np.arange(12).reshape((3, 4)),
                     index=['Ohio', 'Colorado', 'New York'],
                     columns=['one', 'two', 'three', 'four'])
transform = lambda x:x[:4].upper()
data.index.map(transform)
Index(['OHIO', 'COLO', 'NEW '], dtype='object')
data.index = data.index.map(transform)
data
onetwothreefour
OHIO0123
COLO4567
NEW891011
data.rename(index=str.title,columns=str.upper)
ONETWOTHREEFOUR
Ohio0123
Colo4567
New891011
data.rename(index={'OHIO': 'INDIANA'},
             columns={'three': 'peekaboo'})
onetwopeekaboofour
INDIANA0123
COLO4567
NEW891011
#rename可以实现复制DataFrame并对其索引和列标签进行赋值
#修改某个数据集,传入inplace=True即可
data.rename(index={'OHIO': 'INDIANA'}, inplace=True)
data
onetwothreefour
INDIANA0123
COLO4567
NEW891011
#离散化和面元划分
ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]
bins = [18,25,35,60,100]
cats = pd.cut(ages,bins)
cats
[(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (25, 35], (60, 100], (35, 60], (35, 60], (25, 35]]
Length: 12
Categories (4, interval[int64]): [(18, 25] < (25, 35] < (35, 60] < (60, 100]]
cats.codes
array([0, 0, 0, 1, 0, 0, 2, 1, 3, 2, 2, 1], dtype=int8)
cats.categories
IntervalIndex([(18, 25], (25, 35], (35, 60], (60, 100]]
              closed='right',
              dtype='interval[int64]')
pd.value_counts(cats)
(18, 25]     5
(35, 60]     3
(25, 35]     3
(60, 100]    1
dtype: int64
pd.cut(ages,[18, 26, 36, 61, 100],right=False)  #修改开闭端
[[18, 26), [18, 26), [18, 26), [26, 36), [18, 26), ..., [26, 36), [61, 100), [36, 61), [36, 61), [26, 36)]
Length: 12
Categories (4, interval[int64]): [[18, 26) < [26, 36) < [36, 61) < [61, 100)]
group_names = ['Youth', 'YoungAdult', 'MiddleAged', 'Senior']
pd.cut(ages,bins,labels=group_names)#设置自己的面元名称
[Youth, Youth, Youth, YoungAdult, Youth, ..., YoungAdult, Senior, MiddleAged, MiddleAged, YoungAdult]
Length: 12
Categories (4, object): [Youth < YoungAdult < MiddleAged < Senior]
data = np.random.randn(20)
data    
array([ 1.91724059,  0.71063941, -0.61160619, -0.83774853, -0.30427484,
       -0.13651668,  0.12231811,  1.02349581,  0.44230242,  2.5811469 ,
        0.84007075, -0.40956094,  1.87198738, -1.69861267, -0.52190509,
       -0.1944561 , -0.44986769,  0.64421648,  1.96899093,  0.04159415])
#数据的最小值和最大值计算等长面元。下面这个例子中,我们将一些均匀分布的数据分成四组
pd.cut(data,4,precision=2)   #选项precision=2,限定小数只有两位     
[(1.51, 2.58], (0.44, 1.51], (-0.63, 0.44], (-1.7, -0.63], (-0.63, 0.44], ..., (-0.63, 0.44], (-0.63, 0.44], (0.44, 1.51], (1.51, 2.58], (-0.63, 0.44]]
Length: 20
Categories (4, interval[float64]): [(-1.7, -0.63] < (-0.63, 0.44] < (0.44, 1.51] < (1.51, 2.58]]
#qcut根据样本分位数对数据进行面元划分
data = np.random.randn(1000)
cats = pd.qcut(data,4)   #四分位点
cats
[(-0.65, 0.0814], (-0.65, 0.0814], (0.0814, 0.727], (0.0814, 0.727], (-2.875, -0.65], ..., (0.0814, 0.727], (-2.875, -0.65], (-0.65, 0.0814], (-0.65, 0.0814], (-0.65, 0.0814]]
Length: 1000
Categories (4, interval[float64]): [(-2.875, -0.65] < (-0.65, 0.0814] < (0.0814, 0.727] < (0.727, 3.834]]
pd.value_counts(cats)
(0.727, 3.834]     250
(0.0814, 0.727]    250
(-0.65, 0.0814]    250
(-2.875, -0.65]    250
dtype: int64
#传递自定义的分位数
pd.qcut(data,[0, 0.1, 0.5, 0.9, 1.])
[(-1.237, 0.0814], (-1.237, 0.0814], (0.0814, 1.324], (0.0814, 1.324], (-2.875, -1.237], ..., (0.0814, 1.324], (-1.237, 0.0814], (-1.237, 0.0814], (-1.237, 0.0814], (-1.237, 0.0814]]
Length: 1000
Categories (4, interval[float64]): [(-2.875, -1.237] < (-1.237, 0.0814] < (0.0814, 1.324] < (1.324, 3.834]]
#检测和过滤异常值
data = pd.DataFrame(np.random.randn(1000,4))
data.describe()
0123
count1000.0000001000.0000001000.0000001000.000000
mean-0.0887240.0210110.0438870.006012
std0.9900260.9824590.9704841.013532
min-3.417757-3.501364-2.653510-3.266161
25%-0.722939-0.618738-0.637500-0.723452
50%-0.0708580.0476730.0112950.017201
75%0.5789290.6890530.7353960.685065
max2.6959073.2178853.3040643.158566
col = data[2]
col[np.abs(col)>3]
583    3.304064
Name: 2, dtype: float64
 data[(np.abs(data) > 3).any(1)]
0123
37-0.3278842.157466-0.0436363.073042
152-3.417757-0.061750-0.935451-0.627025
1750.578744-0.562655-1.1227643.140705
232-3.1087540.6735180.1656460.924763
2921.2709983.2178850.172434-0.872227
4170.705947-0.0022331.380826-3.266161
487-3.008020-0.298071-0.0482380.680068
5120.165514-3.501364-1.1578210.817954
583-1.525473-1.3297463.304064-2.202428
813-0.2305130.4596340.1302123.158566
#排列和随机采样
df = pd.DataFrame(np.arange(5*4).reshape(5,4))
sampler = np.random.permutation(5) #随机重排序
sampler
array([2, 3, 0, 1, 4])
df
0123
00123
14567
2891011
312131415
416171819
df.take(sampler)
0123
2891011
312131415
00123
14567
416171819
df.sample(n=3)#不用替换的方式选取随机子集
0123
00123
312131415
14567
choices = pd.Series([5, 7, -1, 6, 4])
draws = choices.sample(n=10,replace=True)#允许重复选择
draws
0    5
0    5
1    7
3    6
2   -1
1    7
4    4
2   -1
2   -1
1    7
dtype: int64
#计算指标/哑变量:将分类变量(categorical variable)转换为“哑变量”或“指标矩阵”。
df = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'b'],
                    'data1': range(6)})
df
keydata1
0b0
1b1
2a2
3c3
4a4
5b5
pd.get_dummies(df['key'])
abc
0010
1010
2100
3001
4100
5010
#给指标DataFrame的列加上一个前缀
dummies = pd.get_dummies(df['key'], prefix='key')
df_with_dummy = df[['data1']].join(dummies)
df_with_dummy
data1key_akey_bkey_c
00010
11010
22100
33001
44100
55010
mnames = ['movie_id', 'title', 'genres']
movies = pd.read_table('datasets/movielens/movies.dat', sep='::',
                         header=None, names=mnames)
movies[:10]
C:\Anaconda\lib\site-packages\ipykernel_launcher.py:3: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.
  This is separate from the ipykernel package so we can avoid doing imports until
movie_idtitlegenres
01Toy Story (1995)Animation|Children's|Comedy
12Jumanji (1995)Adventure|Children's|Fantasy
23Grumpier Old Men (1995)Comedy|Romance
34Waiting to Exhale (1995)Comedy|Drama
45Father of the Bride Part II (1995)Comedy
56Heat (1995)Action|Crime|Thriller
67Sabrina (1995)Comedy|Romance
78Tom and Huck (1995)Adventure|Children's
89Sudden Death (1995)Action
910GoldenEye (1995)Action|Adventure|Thriller
all_genres = []
for x in movies.genres:
    all_genres.extend(x.split('|'))
genres = pd.unique(all_genres) 
genres
array(['Animation', "Children's", 'Comedy', 'Adventure', 'Fantasy',
       'Romance', 'Drama', 'Action', 'Crime', 'Thriller', 'Horror',
       'Sci-Fi', 'Documentary', 'War', 'Musical', 'Mystery', 'Film-Noir',
       'Western'], dtype=object)
zero_matrix = np.zeros((len(movies), len(genres)))
zero_matrix
array([[0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.],
       ...,
       [0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.]])
dummies = pd.DataFrame(zero_matrix,columns=genres)
dummies
AnimationChildren'sComedyAdventureFantasyRomanceDramaActionCrimeThrillerHorrorSci-FiDocumentaryWarMusicalMysteryFilm-NoirWestern
00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
10.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
20.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
30.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
40.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
50.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
60.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
70.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
80.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
90.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
100.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
110.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
120.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
130.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
140.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
150.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
160.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
170.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
180.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
190.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
200.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
210.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
220.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
230.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
240.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
250.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
260.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
270.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
280.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
290.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
.........................................................
38530.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38540.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38550.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38560.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38570.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38580.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38590.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38600.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38610.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38620.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38630.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38640.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38650.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38660.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38670.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38680.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38690.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38700.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38710.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38720.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38730.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38740.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38750.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38760.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38770.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38780.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38790.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38800.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38810.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38820.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0

3883 rows × 18 columns

gen = movies.genres[0]
gen.split('|')
['Animation', "Children's", 'Comedy']
dummies.columns.get_indexer(gen.split('|'))
array([0, 1, 2], dtype=int64)
for i,gen in enumerate(movies.genres):
    indices = dummies.columns.get_indexer(gen.split('|'))
    dummies.iloc[i,indices] = 1
dummies
AnimationChildren'sComedyAdventureFantasyRomanceDramaActionCrimeThrillerHorrorSci-FiDocumentaryWarMusicalMysteryFilm-NoirWestern
01.01.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
10.01.00.01.01.00.00.00.00.00.00.00.00.00.00.00.00.00.0
20.00.01.00.00.01.00.00.00.00.00.00.00.00.00.00.00.00.0
30.00.01.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00.0
40.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
50.00.00.00.00.00.00.01.01.01.00.00.00.00.00.00.00.00.0
60.00.01.00.00.01.00.00.00.00.00.00.00.00.00.00.00.00.0
70.01.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
80.00.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.0
90.00.00.01.00.00.00.01.00.01.00.00.00.00.00.00.00.00.0
100.00.01.00.00.01.01.00.00.00.00.00.00.00.00.00.00.00.0
110.00.01.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.0
121.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
130.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00.0
140.00.00.01.00.01.00.01.00.00.00.00.00.00.00.00.00.00.0
150.00.00.00.00.00.01.00.00.01.00.00.00.00.00.00.00.00.0
160.00.00.00.00.01.01.00.00.00.00.00.00.00.00.00.00.00.0
170.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.00.0
180.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
190.00.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.0
200.00.01.00.00.00.01.01.00.00.00.00.00.00.00.00.00.00.0
210.00.00.00.00.00.01.00.01.01.00.00.00.00.00.00.00.00.0
220.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.00.0
230.00.00.00.00.00.01.00.00.00.00.01.00.00.00.00.00.00.0
240.00.00.00.00.01.01.00.00.00.00.00.00.00.00.00.00.00.0
250.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00.0
260.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00.0
270.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00.00.0
280.00.00.01.00.00.00.00.00.00.00.01.00.00.00.00.00.00.0
290.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00.0
.........................................................
38530.00.00.00.00.00.00.00.00.00.01.01.00.00.00.00.00.00.0
38540.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38550.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38560.00.00.01.00.00.00.00.00.00.00.01.00.00.00.00.00.00.0
38570.00.00.01.00.00.00.00.00.00.00.01.00.00.00.00.00.00.0
38580.00.01.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.0
38590.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38600.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.0
38610.00.00.00.00.00.00.00.00.00.01.01.00.00.00.00.00.00.0
38620.00.00.00.00.00.00.00.00.00.01.01.00.00.00.00.00.00.0
38630.00.00.00.00.00.00.00.00.00.01.01.00.00.00.00.00.00.0
38640.00.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.0
38650.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.0
38660.00.00.00.00.00.01.00.00.01.00.00.00.00.00.00.00.00.0
38670.00.00.00.00.00.00.00.00.01.00.01.00.00.00.00.00.00.0
38680.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.0
38690.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.0
38700.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.0
38710.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.0
38720.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.0
38730.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38740.00.01.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00.0
38751.01.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38760.00.00.00.00.00.01.01.00.01.00.00.00.00.00.00.00.00.0
38770.00.00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.00.0
38780.00.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
38790.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00.0
38800.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00.0
38810.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00.0
38820.00.00.00.00.00.01.00.00.01.00.00.00.00.00.00.00.00.0

3883 rows × 18 columns

movies_windic = movies.join(dummies.add_prefix('Game_'))
movies_windic.iloc[0]
movie_id                                      1
title                          Toy Story (1995)
genres              Animation|Children's|Comedy
Game_Animation                                1
Game_Children's                               1
Game_Comedy                                   1
Game_Adventure                                0
Game_Fantasy                                  0
Game_Romance                                  0
Game_Drama                                    0
Game_Action                                   0
Game_Crime                                    0
Game_Thriller                                 0
Game_Horror                                   0
Game_Sci-Fi                                   0
Game_Documentary                              0
Game_War                                      0
Game_Musical                                  0
Game_Mystery                                  0
Game_Film-Noir                                0
Game_Western                                  0
Name: 0, dtype: object
np.random.seed(12345)
values = np.random.rand(10)
values
array([0.92961609, 0.31637555, 0.18391881, 0.20456028, 0.56772503,
       0.5955447 , 0.96451452, 0.6531771 , 0.74890664, 0.65356987])
bins = [0, 0.2, 0.4, 0.6, 0.8, 1]
pd.get_dummies(pd.cut(values,bins))
(0.0, 0.2](0.2, 0.4](0.4, 0.6](0.6, 0.8](0.8, 1.0]
000001
101000
210000
301000
400100
500100
600001
700010
800010
900010

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值