pandas使用總結(jié)

0次洼、pandas常用方法
import pandas as pd

df = pd.read_csv("chicago.csv")

df.head()   # 返回前5項(xiàng)內(nèi)容
df.columns  # 返回?cái)?shù)據(jù)集中的列名
df.columns.size  # 返回?cái)?shù)據(jù)集的列數(shù)
df.describe()  # 返回?cái)?shù)據(jù)集的統(tǒng)計(jì)信息关贵,如min遇骑、max卖毁、std等
df.info()  # 返回?cái)?shù)據(jù)集的基礎(chǔ)信息,每一列數(shù)量統(tǒng)計(jì)落萎,內(nèi)存消耗亥啦、哪些列有缺失值等
df.mean()  # 返回各列的平均值

df.iloc[2:4,]  #取第二行和第三行所有數(shù)據(jù)

df['column_name'].value_counts()  # 'column_name'這個(gè)列中各個(gè)值出現(xiàn)的次數(shù)統(tǒng)計(jì)

df['column_name'].min()  # 該列中最小值

df['column_name'].max()  # 該列中最大值

df['column_name'].unique()  # 'column_name'這個(gè)列中各個(gè)數(shù)據(jù)去重后的list集合

df['column_name'].mode()[0]  # 查看這列中各數(shù)據(jù)出現(xiàn)次數(shù)最多的數(shù)據(jù)

df.sort_values(by=['column_name'])  # 按某一列順序排列df表

df[df['column_name']=='xxxxx']  # 獲column_name值等于xxxx的這一行的值

np.repeat(3, 4)  # array([3, 3, 3, 3])  # 重復(fù)一個(gè)numpy數(shù)據(jù)的值

red_df = red_df.rename(columns={'total_sulfur-dioxide': 'total_sulfur_dioxide'})  # 重新命名數(shù)據(jù)集的一個(gè)列名

df.drop([a, b, c], axis=1, inplace=True) # 刪除數(shù)據(jù)集中的某些列a, b, c, axis=0按行操作 ,axis=1按列操作
1练链、計(jì)算相關(guān)性

相關(guān)性,簡(jiǎn)單講就是:
正相關(guān)和負(fù)相關(guān)错妖,值的大小在-1和1之間疚沐,越接近1暂氯,相關(guān)性越大

import pandas as pd
import numpy as np

filename = '/datasets/ud170/subway/nyc_subway_weather.csv'
subway_df = pd.read_csv(filename)

# 計(jì)算相關(guān)性的一個(gè)函數(shù),類似于numpy的corrcoef()的原理
def correlation(x, y):
    std_x = (x - x.mean()) / x.std(ddof = 0)
    std_y = (y - y.mean()) / y.std(ddof = 0)
    
    return (std_x * std_y).mean()

entries = subway_df['ENTRIESn_hourly']
cum_entries = subway_df['ENTRIESn']
rain = subway_df['meanprecipi']
temp = subway_df['meantempi']

print correlation(entries, rain)
print correlation(entries, temp)
print correlation(rain, temp)

print correlation(entries, cum_entries)

# 用numpy的corrcoef()方法也是可以直接計(jì)算相關(guān)性的
print np.corrcoef(entries, rain)
2亮蛔、DataForm apply()和applymap()的區(qū)別

applymap是對(duì)DataForm中的每一個(gè)單獨(dú)的元素進(jìn)行操作

import pandas as pd

if True:
    df = pd.DataFrame({
        'a': [1, 2, 3],
        'b': [10, 20, 30],
        'c': [5, 10, 15]
    })
    
    def add_one(x):
        return x + 1
        
    print df.applymap(add_one)
    
'''
   a   b   c
0  2  11   6
1  3  21  11
2  4  31  16
'''
    
grades_df = pd.DataFrame(
    data={'exam1': [43, 81, 78, 75, 89, 70, 91, 65, 98, 87],
          'exam2': [24, 63, 56, 56, 67, 51, 79, 46, 72, 60]},
    index=['Andre', 'Barry', 'Chris', 'Dan', 'Emilio', 
           'Fred', 'Greta', 'Humbert', 'Ivan', 'James']
)
    
def convert_grades(grades):
    if grades >= 90:
        return 'A'
    elif grades >= 80:
        return 'B'
    elif grades >= 70:
        return 'C'
    elif grades >= 60:
        return 'D'
    else:
        return 'F'

print grades_df.applymap(convert_grades)

'''
        exam1 exam2
Andre       F     F
Barry       B     D
Chris       C     F
Dan         C     F
Emilio      B     D
Fred        C     F
Greta       A     C
Humbert     D     F
Ivan        A     C
James       B     D
'''

apply()是對(duì)某一列數(shù)據(jù)進(jìn)行操作

import numpy as np
import pandas as pd

df = pd.DataFrame({
    'a': [4, 5, 3, 1, 2],
    'b': [20, 10, 40, 50, 30],
    'c': [25, 20, 5, 15, 10]
})


if True:   
    print df.apply(np.mean)
    print df.apply(np.max)

'''
a     3.0
b    30.0
c    15.0
dtype: float64

a     5
b    50
c    25
dtype: int64
'''

# ascending=False表示降序排列
def second_largest_in_column(column):
    sort_column = column.sort_values(ascending=False)
    return sort_column.iloc[1]
    
def second_largest(df):
    return df.apply(second_largest_in_column)
    
second_largest(df)

'''
a     4
b    40
c    20
dtype: int64
'''

3痴施、在jupter notebook中將數(shù)據(jù)圖形化
%pylab inline
import seaborn as sns

#如果data是一個(gè)DataFrame
data.plot()
4、如何處理數(shù)據(jù)集的缺失值NaN

如果是數(shù)字究流,一般用這一列的平均值去填充缺失值辣吃,如下方法:

mean = df['column_name'].mean()
df['column_name'].fillna(mean, inplace=True)

# df_08.dropna()刪除缺失行后的數(shù)據(jù)
# 想要得出數(shù)據(jù)集中具有缺失值的行數(shù)神得,可以用總行數(shù)減去刪除缺失行后的數(shù)據(jù)

5、查看并刪除數(shù)據(jù)集中的冗余行(即和其他行數(shù)據(jù)一模一樣)
df.duplicated()     # 查看冗余行灯节,非首次出現(xiàn)的冗余行標(biāo)為True
df.drop_duplicates()   # 刪除冗余行后的數(shù)據(jù)

# 想要得出數(shù)據(jù)集中重復(fù)的行數(shù)循头,可以用總行數(shù)減去刪除冗余行后的數(shù)據(jù)

如果是一個(gè)比較復(fù)雜的數(shù)據(jù),比如一家醫(yī)院的患者數(shù)據(jù)集炎疆,如果只是用戶ID相同全跨,患者情況描述不同,也算是冗余亿遂,需要給duplicated和drop_duplicates方法添加參數(shù)subset

6浓若、pandas繪圖
import pandas as pd
% matplotlib inline

df = pd.read_csv('aaa.csv')

df['column_name'].hist()  # 繪制該列數(shù)據(jù)分布的直方圖
# 或者如下:
df['column_name'].plot(kind='hist')

df['column_name'].value_counts.plot(kind='pie')  # 繪制該列中各個(gè)值出現(xiàn)次數(shù)的餅狀圖

df.plot(x='AT', y='PE', kind='scatter')  # 表示x軸為AT,y軸為PE時(shí)蛇数,繪制散點(diǎn)圖

df['column_name'].plot(kind='box')  # 繪制箱線圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挪钓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子耳舅,更是在濱河造成了極大的恐慌碌上,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浦徊,死亡現(xiàn)場(chǎng)離奇詭異馏予,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)盔性,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門霞丧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人冕香,你說(shuō)我怎么就攤上這事蛹尝『笤ィ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵突那,是天一觀的道長(zhǎng)硬贯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)陨收,這世上最難降的妖魔是什么饭豹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮务漩,結(jié)果婚禮上拄衰,老公的妹妹穿的比我還像新娘。我一直安慰自己饵骨,他們只是感情好翘悉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著居触,像睡著了一般妖混。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轮洋,一...
    開(kāi)封第一講書(shū)人閱讀 51,115評(píng)論 1 296
  • 那天制市,我揣著相機(jī)與錄音,去河邊找鬼弊予。 笑死祥楣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的汉柒。 我是一名探鬼主播误褪,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼碾褂!你這毒婦竟也來(lái)了兽间?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤正塌,失蹤者是張志新(化名)和其女友劉穎嘀略,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體传货,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屎鳍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年宏娄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了问裕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡孵坚,死狀恐怖粮宛,靈堂內(nèi)的尸體忽然破棺而出窥淆,到底是詐尸還是另有隱情,我是刑警寧澤巍杈,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布忧饭,位于F島的核電站,受9級(jí)特大地震影響筷畦,放射性物質(zhì)發(fā)生泄漏词裤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一鳖宾、第九天 我趴在偏房一處隱蔽的房頂上張望吼砂。 院中可真熱鬧,春花似錦鼎文、人聲如沸渔肩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)周偎。三九已至,卻和暖如春撑帖,著一層夾襖步出監(jiān)牢的瞬間蓉坎,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工胡嘿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留袍嬉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓灶平,卻偏偏與公主長(zhǎng)得像伺通,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逢享,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

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