Pandas秘籍 第八章

2021-08-11 07:22:20 字數 4367 閱讀 2479

原文:chapter 8

import pandas as pd
在 pandas 中處理 unix 時間戳不是很容易 - 我花了相當長的時間來解決這個問題。 我們在這裡使用的檔案是乙個軟體包流行度檔案,我在我的系統上的/var/log/popularity-contest找到的。

這裡解釋了這個檔案是什麼。

# read it, and

remove the last row

popcon = pd.read_csv('../data/popularity-contest', sep=' ', )[:-1]

popcon.columns = ['atime', 'ctime', 'package-name', 'mru-program', 'tag']

列是訪問時間,建立時間,包名稱最近使用的程式,以及標籤。

popcon

[:5]

atime

ctime

package-name

mru-program

tag0

1387295797

1367633260

perl-base

/usr/bin/perl

11387295796

1354370480

login

/bin/su

21387295743

1354341275

libtalloc2

/usr/lib/x86_64-linux-gnu/libtalloc.so.2.0.7

31387295743

1387224204

libwbclient0

/usr/lib/x86_64-linux-gnu/libwbclient.so.0

41387295742

1354341253

libselinux1

/lib/x86_64-linux-gnu/libselinux.so.1

pandas 中的時間戳解析的神奇部分是 numpydatetime已經儲存為 unix 時間戳。 所以我們需要做的是告訴 pandas 這些整數實際上是資料時間 - 它不需要做任何轉換。

我們需要首先將這些轉換為整數:

popcon['atime'] = popcon['atime'].astype(int)

popcon['ctime'] = popcon['ctime'].astype(int)

每個 numpy 陣列和 pandas 序列都有乙個dtype- 這通常是int64float64object。 一些可用的時間型別是datetime64[s],datetime64[ms]和datetime64[us]。 與之相似,也有timedelta型別。

我們可以使用pd.to_datetime函式將我們的整數時間戳轉換為datetimes。 這是乙個常量時間操作 - 我們實際上並不改變任何資料,只是改變了 pandas 如何看待它。

popcon['atime'] = pd.to_datetime(popcon['atime'], unit='s')

popcon['ctime'] = pd.to_datetime(popcon['ctime'], unit='s')

如果我們現在檢視dtype,它是'atime'].dtype
dtype(')
所以現在我們將atimectime看做時間了。

popcon

[:5]

atime

ctime

package-name

mru-program

tag0

2013-12-17 15:56:37

2013-05-04 02:07:40

perl-base

/usr/bin/perl

12013-12-17 15:56:36

2012-12-01 14:01:20

login

/bin/su

22013-12-17 15:55:43

2012-12-01 05:54:35

libtalloc2

/usr/lib/x86_64-linux-gnu/libtalloc.so.2.0.7

32013-12-17 15:55:43

2013-12-16 20:03:24

libwbclient0

/usr/lib/x86_64-linux-gnu/libwbclient.so.0

42013-12-17 15:55:42

2012-12-01 05:54:13

libselinux1

/lib/x86_64-linux-gnu/libselinux.so.1

現在假設我們要檢視所有不是庫的軟體包。

首先,我想去掉一切帶有時間戳 0 的東西。注意,我們可以在這個比較中使用乙個字串,即使它實際上在裡面是乙個時間戳。這是因為 pandas 是非常厲害的。

popcon = popcon[popcon['atime'] > '1970-01-01']
現在我們可以使用 pandas 的魔法字串功能來檢視包名稱不包含lib的行。

nonlibraries = popcon[~popcon['package-name'].str.contains('lib')]
nonlibraries.sort('ctime', ascending=false)[:10]
atime

ctime

package-name

mru-program

tag57

2013-12-17 04:55:39

2013-12-17 04:55:42

ddd/usr/bin/ddd

4502013-12-16 20:03:20

2013-12-16 20:05:13

nodejs

/usr/bin/npm

4542013-12-16 20:03:20

2013-12-16 20:05:04

switchboard-plug-keyboard

/usr/lib/plugs/pantheon/keyboard/options.txt

4452013-12-16 20:03:20

2013-12-16 20:05:04

thunderbird-locale-en

/usr/lib/thunderbird-addons/extensions/langpac…

3962013-12-16 20:08:27

2013-12-16 20:05:03

software-center

/usr/sbin/update-software-center

4492013-12-16 20:03:20

2013-12-16 20:05:00

samba-common-bin

/usr/bin/net.samba3

3972013-12-16 20:08:25

2013-12-16 20:04:59

postgresql-client-9.1

/usr/lib/postgresql/9.1/bin/psql

3982013-12-16 20:08:23

2013-12-16 20:04:58

postgresql-9.1

/usr/lib/postgresql/9.1/bin/postmaster

4522013-12-16 20:03:20

2013-12-16 20:04:55

php5-dev

/usr/include/php5/main/snprintf.h

4402013-12-16 20:03:20

2013-12-16 20:04:54

php-pear

/usr/share/php/xml/util.php

好吧,很酷,它說我最近安裝了ddd。 和postgresql! 我記得安裝這些東西。

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

第八章(筆記)

能在 中進行記憶體單元的定址的暫存器只有4個,分別是bx si di bp 其中bx bp 是基址,bx對應的段位址是ds,bp對應的段位址是ss si di 是變址,單獨使用時段位址是ds,組合使用段位址是跟隨組合的基址對應的段位址 中進行記憶體單元定址彙總 si di bx bp 常量 si 常...

第八章 字典

d 空字典 d 這就是字典 d dict.fromkeys a b d dict zip keyslist,valslist d dict name bob age 22 建立字典的函式 d name 通過索引key獲取對應的value d.keys 返回d字典物件所有key,返回乙個列表 d.va...