Pandas 庫基於 NumPy 構建,爲 Python 編程語言提供易於使用的數據結構和數據分析工具。python
使用如下約定導入 Pandasgit
import pandas as pd
複製代碼
help(pd.Series.loc)
複製代碼
可以保存任何數據類型的一維標記數組github
s = pd.Series([1, 3, 5, 7], index=['天', '地', '玄', '黃'])
複製代碼
# 左側一列爲索引
s
複製代碼
天 1 地 3 玄 5 黃 7 dtype: int64sql
不一樣類型列的二維標記數據結構,相似 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 | 張 | 小鴨 | 漢 | 女 | - |
pd.read_csv('file.csv', header=None, nrows=5)
df.to_csv('myDataFrame.csv')
複製代碼
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
從行中刪除值(axis = 0)
s.drop(['天', '地'])
複製代碼
玄 5 黃 7 宇 9 dtype: int64
從列中刪除值(axis = 1)
df.drop('姓', axis=1)
複製代碼
按軸標籤排序
df.sort_index()
複製代碼
按軸的值排序
df.sort_values(by='年齡')
複製代碼
從小到大排序的下標
df.rank()
複製代碼
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…