1pandas庫操作
1.1索引對象
Index對象是不可變的妖啥,因此用戶不能對其進行修改(只能對全體index進行整體修改商架,而不能對某個進行修改);不可變可以使Index對象在多個數(shù)據(jù)結(jié)構(gòu)之間安全共享侈离。
index[1] = ‘d’ # TypeError
pandas對象的一個重要方法是reindex峦筒,其作用是創(chuàng)建一個新對象氏义,它的數(shù)據(jù)符合新的索引。
obj.reindex(['a', 'b', 'c', 'd', 'e'])# 將按排序輸出數(shù)據(jù)
時間序列這樣的有序數(shù)據(jù)图云,重新索引時可能需要做一些插值處理惯悠。method選項即可達到此目的,例如竣况,使用ffill可以實現(xiàn)前向值填充
obj3 = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
obj3.reindex(range(6), method='ffill') # 0-1填blue克婶;2-3填purplr;4-5填yellow
reindex可以修改(?)索引和列丹泉。只傳遞一個序列時鸠补,會重新索引結(jié)果的?;列可以?columns關(guān)鍵字重新索引嘀掸。
1.2刪除指定列
drop方法返回的是一個在指定軸上刪除了指定值的新對象紫岩;
new_obj = obj.drop(['d', 'c'])
通過傳遞axis=1或axis=‘columns’可以刪除列的值
data.drop('two', axis=1)
data.drop(['two', 'four'], axis='columns')
1.3索引、選取和過濾
obj = pd.Series(np.arange(4.), index=['a', 'b', 'c', 'd'])
obj['b']
obj[1]
obj[2:4]
obj[['b', 'a', 'd']]
obj[[1, 3]]
利用標簽的切片運算與普通的Python切片運算不同睬塌,其末端是包含的泉蝌;用數(shù)值切片則是包含的
obj['b':'c']
obj['b':'c'] = 5
?一個值或序列對DataFrame進?索引其實就是獲取一個或多個列;
data[['three', 'one']]
data[data['three'] > 5]
data[data < 5] = 0
1.4?loc和iloc進?選取
使?軸標簽(loc)或整數(shù)索引(iloc)揩晴,從DataFrame選擇?和列的?集
data.loc['Colorado', ['two', 'three']] # Colorado行two勋陪、three列
data.iloc[2, [3, 0, 1]] #第三行第4列、1硫兰、2列
1.5算術(shù)運算和數(shù)據(jù)對?
兩個series或者dataframe可以進行加操作
對于DataFrame诅愚,對?操作會同時發(fā)?在?和列上;
如果DataFrame對象相加劫映,沒有共?的列或?標簽违孝,結(jié)果都會是空;
當一個對象中某個軸標簽在另一個對象中找不到時填充一個特殊值(?如0)泳赋;
相加時雌桑,沒有重疊的位置就會產(chǎn)?NA值
df1.add(df2, fill_value=0) # 有就加,沒有這列則為0加對應(yīng)的值
DataFrame和Series之間的運算
frame - series # frame中的每行都減series
如果某個索引值在DataFrame的列或Series的索引中找不到祖今,則參與運算的兩個對象就會被重新索引以形成并集
1.6函數(shù)應(yīng)?和映射
傳遞axis=‘columns’到apply校坑,這個函數(shù)會在每?執(zhí)?
np.abs(frame) #求絕對值
f = lambda x: x.max() - x.min()
frame.apply(f) # 每列的最大值與最小值之差
frame.apply(f, axis='columns') # 對每列執(zhí)行
得到frame中各個浮點值的格式化字符串,使?applymap即可千诬;Series有一個?于應(yīng)?元素級函數(shù)的map?法
format = lambda x: '%.2f' % x
frame.applymap(format) # 保留兩位小數(shù)
frame['e'].map(format) # 第e列保留兩位小數(shù)
1.7排序
要對?或列索引進?排序(按字典順序)耍目,可使?sort_index?法,它將返回一個已排序的新對象徐绑;DataFrame邪驮,可以根據(jù)任意一個軸上的索引進?排序
升序排序
obj.sort_index()
frame.sort_index(axis=1)
降序排序
按值對Series進?排序,可使?其sort_values?法泵三;排序時耕捞,任何缺失值默認都會被放到Series的末尾
frame.sort_index(axis=1, ascending=False)
obj.sort_values()
排序一個DataFrame時,根據(jù)一個或多個列中的值進?排序烫幕。將一個或多個列的名字傳遞給 sort_values的by選項即可
frame.sort_values(by='b')
1.8排名
rank為各組分配一個平均排名俺抽;對數(shù)據(jù)從小到大排序;并列就取不并列時的中間值较曼;原順序不變(第二列顯示排名的序號)
rank(method='first') 根據(jù)值在原數(shù)據(jù)中出現(xiàn)的順序給出排名
obj.rank()
obj.rank(method='first')
也可以按降序進?排名
obj.rank(ascending=False, method='first')
DataFrame可以在?或列上計算排名
frame.rank(axis='columns')
如果某個索引對應(yīng)多個值磷斧,則返回一個Series;?對應(yīng)單個值的捷犹,則返回一個標量值
pandas對象擁有一組常?的數(shù)學和統(tǒng)計?法弛饭。它們?部分都屬于約簡和匯總統(tǒng)計,?于從 Series中提取單個值(如sum或mean)或從DataFrame的?或列中提取一個Series萍歉。
調(diào)?DataFrame的sum?法將會返回一個含有列的和的Series
傳?入axis=‘columns’或axis=1將會按進?和運算
df.sum(axis=1)
NA值會?動被排除侣颂,除?整個切?(這?指的是?或列)都是NA。通過skipna選項可以禁? 該功能:
1.9計數(shù)及唯一性
unique枪孩,它可以得到Series中的唯一值數(shù)組
value_counts?于計算一個Series中各值出現(xiàn)的頻率
isin?于判斷?量化集合的成員資格(判斷a中的每個數(shù)據(jù)是否在b中有出現(xiàn))
uniques = obj.unique()
obj.value_counts()
mask = obj.isin(['b', 'c'])
結(jié)果中的?標簽是所有列的唯一值憔晒。后?的頻率值是每個列中這些值的相應(yīng)計數(shù)
result = data.apply(pd.value_counts).fillna(0)#統(tǒng)計data中每列各數(shù)字出現(xiàn)的次數(shù),沒有出現(xiàn)的填充為0
2linux中公鑰密鑰配置
- cmd中進入usr/hyf/.ssh/文件夾
- ssh-keygen -生成密鑰和公鑰
- cat id_rsa.pub 查看公鑰并復(fù)制內(nèi)容
- ssh root@公網(wǎng)ip 登陸阿里云
- cd 并回車進入用戶主頁
- cd .ssh 進入阿里云.ssh文件夾
- vim authorized_keys 將內(nèi)容復(fù)制到里面
- chmod 700 . #給當前目錄設(shè)置權(quán)限
3自動登陸阿里云腳本
- cmd中進入選中的文件夾(一般為易查找的)
- vim connect_aliyun.sh 創(chuàng)建一個腳本并編輯
- ssh root@公網(wǎng)ip 寫入要執(zhí)行的命令(登陸命令)
- chmod u+x connect_aliyun.sh 給腳本設(shè)置啟動權(quán)限
登陸時直接進入這個文件夾并輸入該腳本就能自動登陸
4向服務(wù)器傳輸文件
- zip -r zhaopin.zip zhaopin 本地壓縮打包文件
- scp zhaopin.zip root@公網(wǎng)ip: /root/zzz/ (冒號后跟欲上傳的路徑) 遠程拷貝至服務(wù)器
- cd /root/zzz/ 進入傳輸?shù)奈募A
- unzip zhaopin.zip 服務(wù)器端解壓
- cd zhaopin/ 進入上傳后的解壓文件
5配置定時爬取
定時爬取全部在服務(wù)器端配置
- 進入/Users/hyf/work/bin/文件夾(cd /Usr/hyf/work/bin/)
- vim crawl_boss.sh 創(chuàng)建并編輯啟動腳本
- source ~/qianfeng/venv/bin/activate 在腳本中寫入啟動虛擬環(huán)境
- cd ~/qianfeng/10days/day10/zhaopin 在腳本中寫入啟動環(huán)境后進入項目文件
- scrapy crawl boss -o ressult.json 在腳本中寫入啟動文件
- 退出腳本編輯環(huán)境
- crontab -e 啟動定時裝置
- */2 * * * /Users/hyf/work/bin/crawl_boss.sh > ~/zzz/logs.txt 設(shè)置每兩天定時調(diào)用啟動腳本并將結(jié)果重定向到txt文件蔑舞。
5.1crontab簡單介紹
crontab文件在etc目錄下, cd /etc/進入etc
-
/1,16 * * * /Users/hyf/work/bin/crawl_boss.sh > ~/zzz/logs.txt表示的意義:minute hour day month week command
0 4 1 jan * /etc/init.d/nginx restart 表示一月一號的4點重啟nginx
星號():代表所有可能的值拒担,例如day字段如果是星號,則表示在滿足其它字段的制約條件后每天都執(zhí)行該命令操作攻询。
逗號(,):可以用逗號隔開的值指定一個列表范圍从撼,例如,“1,2,5,7,8,9”
中杠(-):可以用整數(shù)之間的中杠表示一個整數(shù)范圍钧栖,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時間的間隔頻率低零,例如“0-23/2”表示每兩小時執(zhí)行一次。同時正斜線可以和星號一起使用拯杠,例如*/10毁兆,如果用在minute字段,表示每十分鐘執(zhí)行一次阴挣。
crontab介紹具體參考:https://blog.csdn.net/wd2011063437/article/details/78960668
tar czvf test.tar.gz test 壓縮成gz格式
tar xzvf test.tar.gz 解壓
ps aux | grep 8000 查看端口
netstat -lntp | grep 8000 查在某個端口是否跑了某個服務(wù)
mongdb端口27017