python學習筆記(一)Pandas:Series與DataFrame基礎操作

傳送門

若無特殊說明蝎亚,以下操作環(huán)境均在jupyter notebook中

1. 檢查當前使用版本

import pandas
print(pandas.__version__)

若返回的非最新版本,可通過在cmd中輸入指令升級

conda update pandas

系統(tǒng)會自動下載安裝最新包,安裝好后重啟jupyter notebook即可


2. 讀取文件(簡)

  • 一般先將所要讀取的文件轉為csv或者txt格式
  • 文件路徑格式:\\或者/
  • 使用函數(shù)read_csv或者read_table症副,前者默認sep = ','捞稿,后者默認sep = '\t'(稍后作詳細說明)
  • windows環(huán)境中讀取/導出文件時若出現(xiàn)編碼問題宛蚓,可嘗試通過設置encoding = 'gbk'解決钞楼。(讀取時也可先用記事本打開蜈亩,另存為編碼utf-8的文件)
    import pandas as pd 
    df = pd.read_csv('C:\\Users\\admin\\Desktop\\filename.csv', sep = ',')
    

3. Series

  • 定義:一種類似于一維數(shù)組的對象谅辣,由一列數(shù)據(jù)和一列索引組成
  • 創(chuàng)建:
    #第一種:默認索引
    import pandas as pd
    s1 = pd.Series(range(0,5))
    s1#圖s1
    
    #第二種:字典轉Series修赞,key為索引
    import pandas as pd
    dic = {'a':0,'b':1,'c':2,'d':3,'e':4,'f':5}
    s2 = pd.Series(dic)
    s2#圖s2
    
    #第三種:字符串轉列表,元素為索引桑阶。若為單值柏副,則填充所有索引位對應值
    import pandas as pd
    s3 = pd.Series(3, index = list('abcd'))
    s3#圖s3
    

    返回


    s1.png

    s2.png

    s3.png
  • 操作
    #選取
    s2['a']
    s2['a','c','d']
    
    #運算
    s2[s2 > 2] #篩選大于2的元素,返回包含索引
    s2 * 2 #對所有元素*2
    
    s2 + s3 #自動對齊蚣录,缺失值以NaN填充
    
    #判斷
    'a' in s2
    
    #修改索引
    s3.index = ['e','f','g','h']
    
    #重新索引
    s3.reindex(['d','c','b','a','x'], methon = 'ffill' )
    
    #丟棄指定軸上的項
    s3.drop('a')
    
    #索引切片
    s3['b':'c'] #包含末端
    
    #排序和排名
    s3.order()
    s3.rank(methon = 'max', ascending = False)
    
    #唯一值
    s3.unique().sort()
    
    #值頻率
    s3.value_counts()
    或
    pd.value_counts(s3.values, sort = False)
    
    #成員資格
    s3.isin(['a','b'])
    
    #過濾缺失值
    s3.dropna()
    

4.DataFrame

  • 定義:二維(或高維)數(shù)據(jù)結構割择,每列數(shù)據(jù)類型可以不同,行和列都有索引
  • 創(chuàng)建:
#第一種:等長列表或Numpy數(shù)組組成的字典
data = {'state' : ['Ohio','Ohio','Ohio','Nevada','Nevada'],
         'year' : [2001, 2001, 2002, 2001, 2002],
         'pop' : [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = DataFrame(data, columns = ['year', 'state', 'pop'], index = ['one','two','three',' four','five'])
#如果傳入的列在數(shù)據(jù)中找不到萎河,則以NaN填充

#第二種:嵌套字典
pop = {'Nevada' : {2001: 12.4. 2002: 2.9}, 'Ohio' : {2000 : 1.5, 2001: 1.7, 2002: 3.6}}
frame2 = DataFrame(pop)
  • 操作
#選取單列荔泳,返回Series
frame['state']
frame.year
#選取單行,返回Series
frame.ix['three']

#修改值
frame['state'] = 'Ohio'
frame['year'] = np.range(2000,2005)  #長度必須匹配
#如果傳入的數(shù)組有索引公壤,則按索引對應修改值

#為不存在的列賦值則產(chǎn)生新列
frame['state2'] = frame.state == 'Ohio'

#轉置
frame.T

#重新索引
frame.reindex(index = ['two', 'one'], columns = ['year', 'others'], method = 'bfill')
#或
frame.ix[ ['two','one'], ['year', 'others']]

#丟棄指定軸上的項
frame.drop(['one','two'])
frame.drop('year', axis = 0)

#切片换可,即多行多列
frame[:2]
frame[frame['year'] > 2001]
frame.ix[:'three', 'year']
frame.ix[frame.year > 2001, :2]

#算術運算
df1 + df2 #行列同時對齊
df1.add(df2, fill_value = 0)

#廣播
df - df.ix[0] #df所有行都會按列索引與df[0]相減
df.sub(df['a'], axis = 0)

#函數(shù)應用和映射
f = lambda x: x.max() - x.min()
df.apply(f) #對每一列最大值-最小值
df.apply(f, axis = 1) #對每一行 最大值- 最小值

format = lambda x: '%.2f' %x
frame.applymap(format) #元素級應用

#排序和排名
frame.sort_index(by = ['a','b'])
frame.sort_index(axis = 1, ascending = False)
frame.rank(axis = 1)#對每列內(nèi)部排名

#描述統(tǒng)計
df.sum(axis = 1,skipna = False)
df.cusum()#累加
df.describe()

#相關系數(shù)和協(xié)方差
#略

#過濾缺失值
df.dropna(axis = 1, how = 'all')

#填充缺失數(shù)據(jù)
df.fillna(0)
df.fillna({'a':1,'b':2}) #不同列填充不同值
#注:fillna默認返回新對象,但也可以對現(xiàn)有對象就地修改:
_ = df.fillna(0, inplace = True)

#層次化索引
#略

#列與索引轉換
df.set_index('a', drop = False) #列轉為索引厦幅,保留列
df.reset_index() #索引轉為列
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沾鳄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子确憨,更是在濱河造成了極大的恐慌译荞,老刑警劉巖瓤的,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吞歼,居然都是意外死亡圈膏,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門篙骡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稽坤,“玉大人,你說我怎么就攤上這事糯俗∧蛲剩” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵得湘,是天一觀的道長杖玲。 經(jīng)常有香客問我,道長淘正,這世上最難降的妖魔是什么摆马? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮鸿吆,結果婚禮上囤采,老公的妹妹穿的比我還像新娘。我一直安慰自己惩淳,他們只是感情好斑唬,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著黎泣,像睡著了一般恕刘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抒倚,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天褐着,我揣著相機與錄音,去河邊找鬼托呕。 笑死含蓉,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的项郊。 我是一名探鬼主播馅扣,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼着降!你這毒婦竟也來了差油?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蓄喇,沒想到半個月后发侵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡妆偏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年刃鳄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钱骂。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡叔锐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出见秽,到底是詐尸還是另有隱情掌腰,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布张吉,位于F島的核電站,受9級特大地震影響催植,放射性物質發(fā)生泄漏肮蛹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一创南、第九天 我趴在偏房一處隱蔽的房頂上張望伦忠。 院中可真熱鬧,春花似錦稿辙、人聲如沸昆码。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赋咽。三九已至,卻和暖如春吨娜,著一層夾襖步出監(jiān)牢的瞬間脓匿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工宦赠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留陪毡,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓勾扭,卻偏偏與公主長得像毡琉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子妙色,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

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