Python數(shù)據(jù)分析處理庫(kù)-Pandas 3

七般甲、Groupby操作與字符串

7.1 Groupby操作

import pandas as pd
s = pd.Series([1,2,3,1,2,3],[8,7,6,6,7,8])
grouped = s.groupby(level=0)
grouped.first()

6    3
7    2
8    1
dtype: int64

grouped.last()
#------------------------------
6    1
7    2
8    3
dtype: int64

grouped.sum()

data = pd.DataFrame({'X':['A','B','A','B'],'Y':[4,3,2,1]})
data.groupby(['X']).get_group('A')  #根據(jù)X列g(shù)roupby, 取出A組的值
#------------------------------------

    X   Y
0   A   4
2   A   2
import numpy as np
data = [['bar','bar','foo','foo','tax','tax','cat','cat'],['one','tow','one','tow','one','tow','one','tow']]
index = pd.MultiIndex.from_arrays(data,names=['first','second'])
s = pd.Series(np.random.randn(8),index = index)
s
        first  second
bar    one       0.047907
       tow      -0.100240
foo    one      -0.989266
       tow      -0.656413
tax    one      -0.146667
       tow      -1.458819
cat    one      -0.034952
       tow      -1.186470
dtype: float64

grouped = s.groupby(level=0)  # level=0  first 列
grouped.sum()
grouped = s.groupby(level=1)
grouped.sum()
grouped = s.groupby(level='first')
grouped.sum()

7.2 字符串操作

import pandas as pd
import numpy as np
s = pd.Series(['A', 'b','CkdkieK','CAT','dog',np.nan])
s.str.lower()  #把所有的字母轉(zhuǎn)小寫(xiě)

df = pd.DataFrame(np.random.randn(3,2), columns=['A a','B b'], index = range(3))
df.columns = df.columns.str.replace(' ','_')   #把列名中的空格替換成_

s = pd.Series(['a-b-c','c-d-e','d-e-f'])
0    a-b-c
1    c-d-e
2    d-e-f
dtype: object

s.str.split('-')
0    [a, b, c]
1    [c, d, e]
2    [d, e, f]
dtype: object

s.str.split('-',expand = True)
    0   1   2
0   a   b   c
1   c   d   e
2   d   e   f

s.str.split('-',expand = True, n =1)
    0   1
0   a   b-c
1   c   d-e
2   d   e-f

s = pd.Series(['a-b-c','c-d-e','d-e-f'])
s.str.contains('c')
0     True
1     True
2    False
dtype: bool

s.str.get_dummies(sep='-') 

    a   b   c   d   e   f
0   1   1   1   0   0   0
1   0   0   1   1   1   0
2   0   0   0   1   1   1

八、pandas 繪圖

畫(huà)拆線圖

%matplotlib inline
import pandas as pd
import numpy as np
s = pd.Series(np.random.randn(10),index = np.arange(1,100,10))
s.plot()
image.png
df = pd.DataFrame(np.random.randn(10,4).cumsum(0),index = np.arange(0,100,10),columns=list('ABCD'))
df.plot()
image.png

畫(huà)子圖和柱狀圖

import matplotlib.pyplot as plt
fig,axes = plt.subplots(2,1) # 畫(huà)兩行1列的兩個(gè)子圖
data = pd.Series(np.random.randn(16),index=list('abcdefghijllmnop'))
data.plot(ax=axes[0],kind='bar')  #在第0行子圖畫(huà) 條形圖
data.plot(ax=axes[1],kind='barh') #在第1行子圖畫(huà) 水平條形圖
image.png
df = pd.DataFrame(np.random.rand(6,4),index=['one','two','three','fore','five','six'],columns=pd.Index(list('ABCD'),name='Genus'))
df.plot(kind='bar')
image.png

畫(huà)直方圖

tips = pd.read_csv('tips.csv')
tips.total_bill.plot(kind='hist',bins=50)  # 畫(huà)直方圖 分50個(gè)
image.png

畫(huà)散點(diǎn)圖

macro = pd.read_csv('macrodata.csv')
data = macro[['quarter','realgdp','realcons']]
data.plot.scatter('quarter','realgdp')
image.png
pd.scatter_matrix(data,color='g',alpha=0.3) # 廢棄了,用下面的
pd.plotting.scatter_matrix(data,color='g',alpha=0.3)
image.png

九膘格、 大數(shù)據(jù)處理技巧

怎么讓內(nèi)存占用量小一些

內(nèi)存占用情況

import pandas as pd
gl = pd.read_csv('game_logs.csv')
gl.shape
(171907, 161)  #17萬(wàn)行,161列

gl.info(memory_usage='deep')   #內(nèi)存使用的詳細(xì)情況
#-------------------------------------------------------------
class 'pandas.core.frame.DataFrame'>
RangeIndex: 171907 entries, 0 to 171906
Columns: 161 entries, date to acquisition_info
dtypes: float64(77), int64(6), object(78)
memory usage: 860.5 MB

各種類型占用內(nèi)存情況

for dtype in ['float64','int64','object']:
    selected_dtype = gl.select_dtypes(include = [dtype])
    mean_usage_b = selected_dtype.memory_usage(deep=True).mean()
    mean_usage_mb = mean_usage_b/1024**2
    print ('平均內(nèi)存占用',dtype,mean_usage_mb)
#----------------------------------------------
平均內(nèi)存占用 float64 1.294733194204477
平均內(nèi)存占用 int64 1.1242000034877233
平均內(nèi)存占用 object 9.514454648464541

列出各種類型的最小财松、最大值

import numpy as np
int_types = ['uint8','int8','int16','int32','int64']
for it in int_types:
    print (np.iinfo(it))

減少內(nèi)存空間使用方法

int64 或float64 向下轉(zhuǎn)換為 unsigned 或float32
object 類型占用空間最多瘪贱。如果重復(fù)值特別多,使用category類型辆毡,把對(duì)象轉(zhuǎn)換成整形
日期類型如果把"20170405"轉(zhuǎn)換成日期類型"2017-04-05"會(huì)多占用內(nèi)存

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末菜秦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舶掖,更是在濱河造成了極大的恐慌球昨,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件访锻,死亡現(xiàn)場(chǎng)離奇詭異褪尝,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)期犬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)河哑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人龟虎,你說(shuō)我怎么就攤上這事璃谨。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵佳吞,是天一觀的道長(zhǎng)拱雏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)底扳,這世上最難降的妖魔是什么铸抑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮衷模,結(jié)果婚禮上鹊汛,老公的妹妹穿的比我還像新娘。我一直安慰自己阱冶,他們只是感情好刁憋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著木蹬,像睡著了一般至耻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上镊叁,一...
    開(kāi)封第一講書(shū)人閱讀 51,208評(píng)論 1 299
  • 那天尘颓,我揣著相機(jī)與錄音,去河邊找鬼意系。 笑死泥耀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蛔添。 我是一名探鬼主播痰催,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼迎瞧!你這毒婦竟也來(lái)了夸溶?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凶硅,失蹤者是張志新(化名)和其女友劉穎缝裁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體足绅,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捷绑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了氢妈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粹污。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖首量,靈堂內(nèi)的尸體忽然破棺而出壮吩,到底是詐尸還是另有隱情进苍,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布鸭叙,位于F島的核電站觉啊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏沈贝。R本人自食惡果不足惜杠人,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宋下。 院中可真熱鬧搜吧,春花似錦、人聲如沸杨凑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撩满。三九已至,卻和暖如春绅你,著一層夾襖步出監(jiān)牢的瞬間伺帘,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工忌锯, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伪嫁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓偶垮,卻偏偏與公主長(zhǎng)得像张咳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子似舵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容