1. 程式人生 > 其它 >pandas模組與dataframe

pandas模組與dataframe

Series資料操作

res['a'] = 123

  

res.loc[1]

  

res[0] = 1

  

del res[0]

  

算術運算子

"""
add		加(add)
sub		減(substract)
div		除(divide)
mul		乘(multiple)
"""
sr1 = pd.Series([12,23,34], index=['c','a','d'])
sr3 = pd.Series([11,20,10,14], index=['d','c','a','b'])
sr1.add(sr3,fill_value=0)

  

DataFrame建立方式

表格型資料結構,相當於一個二維陣列,含有一組有序的列也可以看作是由Series組成的共用一個索引的字典

第一種

res = pd.DataFrame({'one':[1,2,3,4],'two':[4,3,2,1]})

  

第二種

pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),
        'two':pd.Series([1,2,3],index=['b','a','c'])})

  

第三種

pd.DataFrame(np.array([[10,20],[30,40]]),index=['a','b'],columns=['c1','c2'])

  

更多

pd.DataFrame([np.arange(1,8),np.arange(11,18)])
s1 = pd.Series(np.arange(1,9,2))
s2 = pd.Series(np.arange(2,10,2))
s3 = pd.Series(np.arange(5,7),index=[1,2])
df5 = pd.DataFrame({'c1':s1,'c2':s2,'c3':s3})

  

以上建立方式都僅僅做一個瞭解即可,因為工作中dataframe的資料一般都是來自於讀取外部檔案資料,而不是自己手動去建立。

常見屬性

1.index 行索引

2.columns 列索引

3.T 轉置

4.values 值索引

5.describe 快速統計

DataFrame資料型別補充

在DataFrame中所有的字元型別資料在檢視資料型別的時候都表示成object

讀取外部資料

讀取文字檔案和.csv結尾的檔案資料

pd.read_csv() 

  

讀取excel表格檔案資料

pd.read_excel()

  

讀取MySQL表格資料

pd.read_sql()

  

讀取頁面上table標籤內所有的資料

pd.read_html()

  

文字檔案讀取

pd.read_csv(filepath_or_buffer, sep=',', header='infer', names=None, usecols=None, skiprows=None, skipfooter=None, converters=None, encoding=None)

filepath_or_buffer

指定txt檔案或csv檔案所在的具體路徑

sep

指定原資料集中各欄位之間的分隔符,預設為逗號”,”

header

是否需要將原資料集中的第一行作為表頭,預設將第一行用作欄位名稱 ,如果原始資料沒有表頭需要將該引數設定為None

names

如果原資料集中沒有欄位,可以通過該引數在資料讀取時給資料框新增具體的表頭

usecols

指定需要讀取原資料集中的哪些變數名

skiprows

資料讀取時,指定需要跳過原資料集開頭的行數

有一些表格開頭是有幾行文字說明的,讀取的時候應該跳過

skipfooter

資料讀取時,指定需要跳過原資料集末尾的行數

converters

用於資料型別的轉換(以字典的形式指定)

encoding

如果檔案中含有中文,有時需要指定字元編碼

excel表格讀取

pd.read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0, index_col=None, names=None,
na_values=None, thousands=None, convert_float=True)

pd.read_excel(r'data_test02.xlsx',
header = None,
names = ['ID','Product','Color','Size'],
converters = {'ID':str}
)

io

指定電子表格的具體路徑

sheet—name

指定需要讀取電子表格中的第幾個Sheet,既可以傳遞整數也可以傳遞具體的Sheet名稱

header

是否需要將資料集的第一行用作表頭,預設為是需要的

skiprows

讀取資料時,指定跳過的開始行數

skip_footer

讀取資料時,指定跳過的末尾行數

index_col

指定哪些列用作資料框的行索引(標籤)

na_values

指定原始資料中哪些特殊值代表了缺失值

thousands

指定原始資料集中的千分位符

convert_float

預設將所有的數值型欄位轉換為浮點型欄位

converters

通過字典的形式,指定某些列需要轉換的形式

  

資料庫資料讀取

# 在anaconda環境下直接安裝
# pymysql模組
import pymysql
conn = pymysql.connect(host,port,user,password, database, charset)
# 利用pymysql建立好連結MySQL的連結之後即可通過該連結操作MySQL
pd.read_sql('select * from user', con = conn)
conn.close()  # 關閉連結

  

host

指定需要訪問的MySQL伺服器

port

指定訪問MySQL資料庫的埠號 charset:指定讀取MySQL資料庫的字符集,如果資料庫表中含有中文,一般可以嘗試將該引數設定為 “utf8”或“gbk”

user

指定訪問MySQL資料庫的使用者名稱

password

指定訪問MySQL資料庫的密碼

database

指定訪問MySQL資料庫的具體庫名

網頁表格資料讀取

pd.read_html(r'https://baike.baidu.com/item/NBA%E6%80%BB%E5%86%A0%E5%86%9B/2173192?fr=aladdin')[0]

  

資料概覽

檢視行

df.columns

  

檢視列

df.index 

  

行列

df.shape

  

資料型別

df.dtypes

  

取頭部多條資料

df.head(2)

  

取尾部多條資料

df.tail(3)

  

行列操作

獲取指定列對應的資料

df['列欄位名詞']
df.rename(column={'舊列名稱':'新列名稱'})

  

建立新的列

df['新列名稱']=df.列名稱/(df.列名稱1+df.列名稱2)

  

自定義位置

df.insert(3,'新列名稱',新資料)

  

新增行

df3 = df1.append(df2)

  

資料篩選

獲取指定列資料

df['列名']  # 單列資料
df[['列名1','列名2',...]]  # 多列資料

  

獲取指定行資料

sec_buildings.loc[sec_buildings["region"] == '浦東']

sec_buildings.loc[(sec_buildings["region"] == '浦東') & (sec_buildings['size'] > 150),]

sec_buildings.loc[(sec_buildings["region"] == '浦東') & (sec_buildings['size'] > 150),['name','tot_amt','price_unit']]

  

資料處理

sec_car = pd.read_csv(r'sec_cars.csv')
sec_car.head()
sec_car.dtypes
sec_car.Boarding_time = pd.to_datetime(sec_car.Boarding_time, format = '%Y年%m月')


sec_car.New_price = sec_car.New_price.str[:-1].astype(float)