1. 程式人生 > >python中pandas庫學習筆記

python中pandas庫學習筆記

現在回想學pandas很意外,記得五月份的時候剛剛跑到現在的公司實習,那個時候公司沒發電腦,當時天天去那就看書(自己的電腦被朋友拿走了),就這樣看了半個月的pandas,後來也就慢慢用上了,下面是pandas個人學習的一些簡單筆記:
#python中的pandas庫主要有DataFrame和Series類(面向物件的的語言更願意叫類) DataFrame也就是
#資料框(主要是借鑑R裡面的data.frame),Series也就是序列 ,pandas底層是c寫的 效能很棒,有大神
#做過測試  處理億級別的資料沒問題,起效能可以跟同等配置的sas媲美
#DataFrame索引  df.loc是標籤選取操作,df.iloc是位置切片操作
print(df[['row_names','Rape']])
df['行標籤']
df.loc[行標籤,列標籤]
print(df.loc[0:2,['Rape','Murder']])
df.iloc[行位置,列位置]
df.iloc[1,1]#選取第二行,第二列的值,返回的為單個值
df.iloc[0,2],:]#選取第一行及第三行的資料
df.iloc[0:2,:]#選取第一行到第三行(不包含)的資料
df.iloc[:,1]#選取所有記錄的第一列的值,返回的為一個Series
df.iloc[1,:]#選取第一行資料,返回的為一個Series
print(df.ix[1,1])  # 更廣義的切片方式是使用.ix,它自動根據你給到的索引型別判斷是使用位置還是標籤進行切片
print(df.ix[0:2])


#DataFrame根據條件選取子集  類似於sas裡面if、where ,R裡面的subset之類的函式
df[df.Murder>13]
df[(df.Murder>10)&(df.Rape>30)]
df[df.sex==u'男']
#重新命名  相當於sas裡面的rename   R軟體中reshape包的中的rename
df.rename(columns={'A':'A_rename'})  
df.rename(index={1:'other'})

#刪除列  相當於sas中的drop  R軟體中的test['col']<-null
df.drop(['a','b'],axis=1)  or  del  df[['a','b']]

#排序  相當於sas裡面的sort   R軟體裡面的df[order(x),]
df.sort(columns='C')   #行排序  y軸上
df.sort(axis=1)  #各個列之間位置排序  x軸上

#資料描述  相當於sas中proc menas  R軟體裡面的summary
df.describe()


#生成新的一列  跟R裡面有點類似
df['new_columns']=df['columns']
df.insert(1,'new_columns',df['B'])  #效率最高
df.join(Series(df['columns'],name='new_columns'))


#列上面的追加  相當於sas中的append   R裡面cbind()
df.append(df1,ignore_index=True)
pd.concat([df,df1],ignore_index=True)

#最經典的join   跟sas和R裡面的merge類似   跟sql裡面的各種join對照
merge()

#刪除重行  跟sas裡面nodukey   R裡面的which(!duplicated(df[])類似
df.drop_duplicated()

#獲取最大值  最小值的位置   有點類似矩陣裡面的方法
df.idxmin(axis=0 ) df.idxmax(axis=1)  0和1有什麼不同  自己摸索去

#讀取外部資料跟sas的proc  import  R裡面的read.csv等類似
read_excel()  read_csv()  read_hdf5() 等

與之相反的是df.to_excel()   df.to_ecv()

#缺失值處理  個人覺得pandas中缺失值處理比sas和R方便多了
df.fillna(9999)  #用9999填充  

#連結資料庫 不多說    pandas裡面主要用 MySQLdb
import MySQLdb
conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="mysql",use_unicode=True,charset="utf8")
read_sql() #很經典
#寫資料進資料庫
df.to_sql('hbase_visit',con, flavor="mysql", if_exists='replace', index=False)

#groupby  跟sas裡面的中的by    R軟體中dplyr包中的group_by  sql裡面的group by功能是一樣的 這裡不多說

#求啞變數  
dumiper=pd.get_dummies(df['key'])
df['key'].join(dumpier)

#透視表  和交叉表   跟sas裡面的proc  freq步類似  R裡面的aggrate和cast函式類似
pd.pivot_table()
pd.crosstab()

#聚合函式經常跟group by一起組合用
df.groupby('sex').agg({'height':['mean','sum'],'weight':['count','min']})  


#資料查詢過濾
test.query("0.2
將STK_ID中的值過濾出來
stk_list = ['600809','600141','600329']中的全部記錄過濾出來,命令是:rpt[rpt['STK_ID'].isin(stk_list)].
將dataframe中,某列進行清洗的命令
刪除換行符:misc['product_desc'] = misc['product_desc'].str.replace('\n', '')
刪除字串前後空格:df["Make"] = df["Make"].map(str.strip)


如果用模糊匹配的話,命令是:
rpt[rpt['STK_ID'].str.contains(r'^600[0-9]{3}$')]


對dataframe中元素,進行型別轉換

df['2nd'] = df['2nd'].str.replace(',','').astype(int) df['CTR'] = df['CTR'].str.replace('%','').astype(np.float64)
#時間變換  主要依賴於datemie  和time兩個包
http://www.2cto.com/kf/201401/276088.html

#其他的一些技巧
df2[df2['A'].map(lambda x:x.startswith('61'))]  #篩選出以61開頭的資料
df2["Author"].str.replace("<.+>", "").head()  #replace("<.+>", "")表示將字串中以”<”開頭;以”>”結束的任意子串替換為空字串

commits = df2["Name"].head(15)
print commits.unique(), len(commits.unique())   #獲的NAME的不同個數,類似於sql裡面count(distinct name)


#pandas中最核心 最經典的函式apply  map   applymap

#這三個函式是pandas裡面資料變換的核心  避免了for迴圈,跟R裡面的apply函式類似
#主要用法不清楚可以問我

pd.concat([df1,df2],axis=1)  橫向合併 ,沒有axis=1 則縱向合併

上面有不懂得、或者我寫錯的、或者侵權的、或願意交流的請加(714947298)


相關推薦

pythonpandas學習筆記

現在回想學pandas很意外,記得五月份的時候剛剛跑到現在的公司實習,那個時候公司沒發電腦,當時天天去那就看書(自己的電腦被朋友拿走了),就這樣看了半個月的pandas,後來也就慢慢用上了,下面是pa

pythonstrip()方法學習筆記

bbb 方法學 python pytho ring strip strip() clas ng2 Python strip() 方法用於移除字符串頭尾指定的字符(默認為空格)。 當使用strip(‘xxx‘),只要字符串頭尾有"xxx"中的一個,就會去掉,而不是符合字符串‘

python類的學習筆記(源碼版)

類的使用1.1第一段代碼 #定義一個類(define a class ) class Cat: #屬性(attribution) #方法(methods) def eat(self): print("cat is eating

pythonpandasDataFrame對行和列的操作使用方法

用pandas中的DataFrame時選取行或列:import numpy as np import pandas as pd from pandas import Sereis, DataFrame ser = Series(np.arange(3.)) data =

python學習筆記——分組計算利器:pandas的groupby技術

        最近處理資料需要分組計算,又用到了groupby函式,溫故而知新。   分組運算的第一階段,pandas 物件(無論是 Series、DataFrame 還是其他的)中的資料會根據你

python pandas 學習使用筆記

Series資料型別 Series is a one-dimensional labeled array capable of holding any data type (integers, strings, floating

python requests學習筆記(下)

mail 接收 緩存 nbsp 0.10 基本 eat agen 維基百科 1.請求異常處理 請求異常類型: 請求超時處理(timeout): 實現代碼: import requestsfrom requests import exceptions #引

python學習筆記(threading

condition pre ctime IT 程序 rlock HR mov 實例 import threading threading模塊裏提供的類。   1.  Thread:表示一個線程的執行的對象。   2.  Lock:鎖原語對象   3.  Rlock:可重入鎖

python基礎教程_學習筆記18:標準:一些最愛——shelve

變量綁定 工作 關閉 mes 名稱 tis 標準 times data- 版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/signjing/article/details/3602998

Pythonnumpypandas的基本用法

使用前先安裝兩個庫:python3 -m pip install numpy pandas 注意因為我把我自己的python.exe命令成了python3.exe(因為系統裡有多個版本的python存在),所以上面的命令裡用的是python3。 numpy庫: NumP

pythontime學習日記

版權宣告 本篇內容為自己的學習內容,僅做日記記錄以便日後複習使用。並非本人原創。 time.sleep延時函式 sleep函式可以實現程式的延時,可控制期望時延後執行下一條語句。 import time time.sleep(10) # 延時 10s, t

python基礎教程_學習筆記16:標準:一些最愛——random

標準庫:一些最愛 random random模組包括返回隨機數的函式,可以用於模擬或者用於任何產生隨機輸出的程式。 事實上,所產生的數字都是偽隨機數,它們以一個可預測的系統作為基礎,除非是為了強加密的目標,否則這些隨機數還是足夠隨機的。如果真的需要隨機性,可以使用os模組的

利用python進行資料分析學習筆記-Pandas

無論如何,堅持啊! pandas的資料結構 Series obj = Series([]) #產生一個Series obj = Series({})#可以通過引入一個dict來建立一個Series 包括values和index兩個屬性,而valu

python-urllib學習筆記

import urllib.request, urllib.parse ''' urllib常用的請求語句 ''' url = '' # 傳送請求 res = urllib.request.urlopen(url=url) # 讀取請求到的內容 res.read().de

pythonpandas學習

Python中的pandas模組進行資料分析。 接下來pandas介紹中將學習到如下8塊內容: 1、資料結構簡介:DataFrame和Series 2、資料索引index 3、利用pandas查詢資料 4、利用pandas的DataFrames進行統計分析 5、利用pan

Andorid使用Jsoup解析解析XML、HTML、Dom節點---第三方學習筆記(三)

XML介紹: XML簡介: XML,可擴充套件標記語言,標準通用標記語言的子集。 一種用於標記電子檔案使其具有結構性的標記語言。 它可以用來標記資料、定義資料型別 是一種允許使用者對自己的標記語言進行定義的源語言。 非常適合全球資訊網傳輸 提供統一方法描述

python框架之 Tornado 學習筆記(一)

tornado pythontornado 一個簡單的服務器的例子:首先,我們需要安裝 tornado ,安裝比較簡單: pip install tornado 測試安裝是否成功,可以打開python 終端,輸入: import tornado.https

數據學習筆記_10_函數依賴詳解——函數依賴公理及其推得規律和屬性閉包

一個 說明 tro ans while 比較 接下來 子集 and 首先引入armstrong‘s axioms, 反射律(reflexivity rule)對於任何為LA(a)子集的LA(b)來說,LA(a)->LA(b)恒成立 增加律(argu

數據學習筆記13_decomposition of bcnf ultimate version

version 處理 osi 哪裏 最大 color 方法 分表 不為 話說這本書也是夠奇怪的,前面義正詞嚴的講了一個decomposition method of BCNF然後後面又說這個方法並不充分……嘛,開講。 根據筆記10的內容,再拆分一個非BCNF的數據表

Python_sklearn機器學習學習筆記(四)decision_tree(決策樹)

min n) 空間 strong output epo from 標簽 ict # 決策樹 import pandas as pd from sklearn.tree import DecisionTreeClassifier from sklearn.