接上篇:笨辦法學(xué)分析[01]數(shù)據(jù)導(dǎo)入
我們導(dǎo)入了對(duì)學(xué)生群體的網(wǎng)購行為調(diào)研數(shù)據(jù),今天來對(duì)數(shù)據(jù)進(jìn)行簡單的操作和替換瓣蛀。
01.訪問員編號(hào)數(shù)據(jù)重構(gòu)(替換為名稱)
我們查看數(shù)據(jù)可以觀察到辽旋,問卷中的所有答案都是用代號(hào)替代的田巴,我們可以使用pandas中的各種函數(shù)達(dá)成我們的統(tǒng)計(jì)目的毁葱,但是統(tǒng)計(jì)出的分類并不利于我們識(shí)別。因此將這些代號(hào)替換成人類易于識(shí)別的文字是必要的(咦杉女,我們?yōu)槭裁匆么?hào)呢瞻讽?在傳統(tǒng)的數(shù)據(jù)分析中人工使用代號(hào)作分類、錄入等非常高效有用熏挎,但用于計(jì)算機(jī)生成的數(shù)據(jù)時(shí)速勇,似乎分類代號(hào)反而給我們帶來了枷鎖)。
那么拿訪問員編號(hào)開刀吧坎拐。
首先烦磁,我們來統(tǒng)計(jì)一下訪問員有哪幾位。
#對(duì)訪問員進(jìn)行統(tǒng)計(jì)
int_data['訪問員編號(hào)'].groupby(int_data['訪問員編號(hào)']).count()
#int_data['訪問員編號(hào)']:是只將訪問員編號(hào)列輸出出來哼勇,作為統(tǒng)計(jì)數(shù)據(jù)都伪。
#groupby(int_data['訪問員編號(hào)']):是表示使用訪問員編號(hào)列進(jìn)行分類統(tǒng)計(jì)。
#count():統(tǒng)計(jì)方法為計(jì)數(shù)积担,也可以是sum()陨晶、mean()等等常用函數(shù)。
#下面是Python的輸入輸出結(jié)果
In [40]: int_data['訪問員編號(hào)'].groupby(int_data['訪問員編號(hào)']).count()
Out[40]:
訪問員編號(hào)
1 50
2 25
3 25
4 25
dtype: int64
可以看得出來帝璧,訪問員一共4位先誉,其中訪問員1完成了50份問卷湿刽。2/3/4三個(gè)訪問員分別完成了25份問卷。
下一步谆膳,我們我們用replace方法將原始數(shù)據(jù)中的訪問員編號(hào)換成訪問員名稱叭爱,假設(shè)四位訪問員分別為:趙一撮躁、錢二漱病、孫三、李四把曼。
#替換值
int_data['訪問員編號(hào)'].replace(1, '趙一')
#可以傳入一個(gè)替換列表杨帽,進(jìn)行批量替換
int_data['訪問員編號(hào)'].replace([1, 2, 3, 4],['趙一', '錢二', '孫三', '李四'])
#以下是輸入輸出結(jié)果
int_data['訪問員編號(hào)'].replace([1, 2, 3, 4],['趙一', '錢二', '孫三', '李四'])
Out[43]:
問卷編號(hào)
1 趙一
2 趙一
3 趙一
4 趙一
5 趙一
···
120 趙一
121 趙一
122 趙一
123 趙一
124 趙一
125 趙一
Name: 訪問員編號(hào), dtype: object
不過這里有個(gè)問題,使用replace方法替換值并不改變?cè)瓟?shù)據(jù)嗤军。我們將改變后的數(shù)據(jù)重新賦值給int_data或者單獨(dú)列出“訪問員編號(hào)數(shù)據(jù)”:
#單獨(dú)列出訪問員姓名數(shù)據(jù)
Surveyor=int_data['訪問員編號(hào)'].replace([1, 2, 3, 4],['趙一', '錢二', '孫三', '李四'])
Surveyor.groupby(Surveyor).count()
#以下是輸入輸出結(jié)果:
Surveyor=int_data['訪問員編號(hào)'].replace([1, 2, 3, 4],['趙一', '錢二', '孫三', '李四'])
Surveyor.groupby(Surveyor).count()
Out[48]:
訪問員編號(hào)
孫三 25
李四 25
趙一 50
錢二 25
dtype: int64
這樣我們就完成了數(shù)據(jù)的替換工作注盈。
如果要更改原始數(shù)據(jù),只需要:
int_data['訪問員編號(hào)']=int_data['訪問員編號(hào)'].replace([1, 2, 3, 4],['趙一', '錢二', '孫三', '李四'])
02.索引重構(gòu)
附加一個(gè):實(shí)際上像“訪問員編號(hào)”叙赚、“學(xué)欣峡停”、“性別”之類的字段震叮,是中文字符胧砰,想把它替換為英文的。
很簡單苇瓣,使用rename方法可以解決尉间。
#重命名列名稱,以字典形式傳入
int_data.rename(columns={'訪問員編號(hào)':'Surveyor',
'學(xué)校':'University',
'性別':'Sex'})
#以下是輸出結(jié)果(只截取了部分?jǐn)?shù)據(jù)击罪,注意對(duì)比列標(biāo)題columns)
In [53]: int_data.rename(columns={'訪問員編號(hào)':'Surveyor',
'學(xué)校':'University',
'性別':'Sex'})
Out[53]:
Surveyor University Sex 3 4 5 5.1 5.2 5.3 5.4 ... 13.3 13.4 \
問卷編號(hào) ...
1 1 C B B NaN NaN NaN NaN NaN NaN ... NaN NaN
2 1 C B A A A B C D E ... NaN NaN
3 1 C B A B A NaN NaN NaN NaN ... NaN NaN
4 1 C B A A A B C NaN NaN ... NaN NaN
5 1 C B A A A NaN NaN D E ... NaN NaN
當(dāng)然哲嘲,重命名索引列的名稱是可以這樣的:
#重命名索引列的名稱(問卷編號(hào)改成“Qsnber”)
In[57]:int_data.index.names=['Qsnber']
In[58]:int_data
Out[58]:
訪問員編號(hào) 學(xué)校 性別 3 4 5 5.1 5.2 5.3 5.4 ... 13.3 13.4 14 14.1 \
Qsnber ...
1 1 C B B NaN NaN NaN NaN NaN NaN ... NaN NaN A B
2 1 C B A A A B C D E ... NaN NaN A B
3 1 C B A B A NaN NaN NaN NaN ... NaN NaN A B
4 1 C B A A A B C NaN NaN ... NaN NaN A B
5 1 C B A A A NaN NaN D E ... NaN NaN A B