Pandas 基礎

Pandas 簡介

Pandas

Pandas 庫基於 NumPy 構建,爲 Python 編程語言提供易於使用的數據結構和數據分析工具。python

使用如下約定導入 Pandasgit

import pandas as pd
複製代碼

幫助

help(pd.Series.loc)
複製代碼

Pandas 數據結構

序列(Series)

可以保存任何數據類型的一維標記數組github

s = pd.Series([1, 3, 5, 7], index=['天', '地', '玄', '黃'])
複製代碼
# 左側一列爲索引
s
複製代碼

天 1 地 3 玄 5 黃 7 dtype: int64sql

數據框(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() 的便捷包裝器app

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 請查看:github.com/iOSDevLog/A…

相關文章
相關標籤/搜索