天天看點

Pandas 基礎

Pandas 簡介

Pandas 基礎

Pandas

Pandas 庫基于 NumPy 建構,為 Python 程式設計語言提供易于使用的資料結構和資料分析工具。

Pandas 基礎

Pandas

使用以下約定導入 Pandas

import pandas as pd           

複制

幫助

help(pd.Series.loc)           

複制

Pandas 資料結構

序列(Series)

能夠儲存任何資料類型的一維标記數組

s = pd.Series([1, 3, 5, 7], index=['天', '地', '玄', '黃'])           

複制

# 左側一列為索引
s           

複制

天 1

地 3

玄 5

黃 7

dtype: int64

資料框(DataFrame)

不同類型列的二維标記資料結構,類似 Excel 表格

上面一行為列名

左側一列為索引

- 民族 姓别 年齡
1 小武 3
2 小久 1
3 小鴨 -
data = {'姓': ['賈', '賈', '張'],
        '名': ['小武', '小久', '小鴨́'],
        '民族': ['漢', '漢', '漢'],
        '年齡': [3, 1, None]}           

複制

data           

複制

{'姓': ['賈', '賈', '張'],

'名': ['小武', '小久', '小鴨́'],

'民族': ['漢', '漢', '漢'],

'年齡': [3, 1, None]}

df = pd.DataFrame(data, columns=['姓', '名', '年齡'])           

複制

df           

複制

- 民族 姓别 年齡
1 小武 3
2 小久 1
3 小鴨 -

檔案 I / O

讀寫 CSV

pd.read_csv('file.csv', header=None, nrows=5)
df.to_csv('myDataFrame.csv')           

複制

讀寫 Excel

pd.read_excel('file.xlsx')
pd.to_excel('dir/myDataFrame.xlsx', sheet_name='Sheet1')
xlsx = pd.ExcelFile('file.xls')
df = pd.read_excel(xlsx, 'Sheet1')           

複制

讀取資料庫

from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
pd.read_sql("SELECT * FROM my_table;", engine)
pd.read_sql_table('my_table', engine)
pd.read_sql_query("SELECT * FROM my_table;", engine)           

複制

read_sql() 是 read_sql_table() 和 read_sql_query() 的便捷包裝器

pd.to_sql('myDf', engine)           

複制

選擇

擷取

# 擷取 1 個資料
s['天']           

複制

1

# 擷取 DataFrame 的子集
df[1:]           

複制

選擇,布爾索引 & 設定

位置

按行和列選擇單個值

df.iloc[[0], [1]]           

複制

df.iat[0, 1]           

複制

'小武'

标簽

按行和列标簽選擇單個值

df.loc[0, '姓']           

複制

'賈'

df.at[0, '姓']           

複制

'賈'

布爾索引

s[~(s > 1)]           

複制

天 1

dtype: int64

s[(s < -1) | (s > 2)]           

複制

地 3

玄 5

黃 7

dtype: int64

df[df['年齡']>1]           

複制

設定

将序列 s 的索引 '宇' 設定為 9

s['宇'] = 9
s           

複制

天 1

地 3

玄 5

黃 7

宇 9

dtype: int64

删除(dropping)

從行中删除值(axis = 0)

s.drop(['天', '地'])           

複制

玄 5

黃 7

宇 9

dtype: int64

從列中删除值(axis = 1)

df.drop('姓', axis=1)           

複制

排序和排名

按軸标簽排序

df.sort_index()           

複制

按軸的值排序

df.sort_values(by='年齡')           

複制

從小到大排序的下标

df.rank()           

複制

檢索 Series / DataFrame 資訊

基本資訊

df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
                  index=['cobra', 'viper', 'sidewinder'],
                  columns=['max_speed', 'shield'])           

複制

(行,列)

df.shape           

複制

(3, 2)

描述索引

df.index           

複制

Index(['cobra', 'viper', 'sidewinder'], dtype='object')

描述 DataFrame 列資訊

df.columns           

複制

Index(['max_speed', 'shield'], dtype='object')

DataFrame 資訊

df.info()           

複制

非 NA 值的數量

df.count()           

複制

max_speed 3

shield 3

dtype: int64

摘要

總和

df.sum()           

複制

max_speed 12

shield 15

dtype: int64

累積值

df.cumsum()           

複制

最小值

df.min()           

複制

max_speed 1

shield 2

dtype: int64

最大值

df.max()           

複制

max_speed 7

shield 8

dtype: int64

最小索引值

df.idxmin()           

複制

max_speed cobra

shield cobra

dtype: object

最大索引值

df.idxmax()           

複制

max_speed sidewinder

shield sidewinder

dtype: object

摘要統計

df.describe()

均值

```python
df.mean()           

複制

max_speed 4.0

shield 5.0

dtype: float64

中位數

df.median()           

複制

max_speed 4.0

shield 5.0

dtype: float64

應用函數

f = lambda x: x*2           

複制

應用函數

df.apply(f)           

複制

按元素應用函數

df.applymap(f)           

複制

資料對齊

内部資料對齊

值 NA 在不重疊的索引中引入

s3 = pd.Series([7, -2, 3], index=['玄', '黃', '宇'])           

複制

s + s3           

複制

地 NaN

天 NaN

宇 12.0

玄 12.0

黃 5.0

dtype: float64

填充方法的算術運算

借助填充方法自行完成内部資料對齊

s.add(s3, fill_value=0)           

複制

地 3.0

天 1.0

宇 12.0

玄 12.0

黃 5.0

dtype: float64

s.sub(s3, fill_value=2)           

複制

地 1.0

天 -1.0

宇 6.0

玄 -2.0

黃 9.0

dtype: float64

s.div(s3, fill_value=4)           

複制

地 0.750000

天 0.250000

宇 3.000000

玄 0.714286

黃 -3.500000

dtype: float64

s.mul(s3, fill_value=3)           

複制

地 9.0

天 3.0

宇 27.0

玄 35.0

黃 -14.0

dtype: float64

ipynb 請檢視:https://github.com/iOSDevLog/AIDevLog/blob/master/Python%20%E5%9F%BA%E7%A1%80/PandasBasic.ipynb