- pandas 資料結構
series(一維), DataFrame(二維), Panel(少用)
- 輸出不顯示省略号
# 行或列的數量多的時候,pandas 的輸出會預設用省略号代替
pandas.set_option('display.max_rows',None)
pd.set_option('display.max_colwidth',None)
order_list = [
{'order_id': , 'price': , 'date': '2018-01-01'},
{'order_id': , 'price': , 'date': '2018-01-02'},
{'order_id': , 'price': , 'date': '2018-01-05'},
{'order_id': , 'price': , 'date': '2018-01-01'},
]
import pandas as pd
df = pd.DataFrame(order_list)
# >>>
date order_id price
--
--
--
--
# 橫向的稱為列(column), 縱向的稱為索引(index)
# 使用 list(dict) 生成,dict的key為column, index自動遞增生成
# 使用 嵌套字典生成,外層key為column, 内層key為index
# 也可以命名行和列
import numpy as np
df = pd.DataFrame(np.arange().reshape((,)), index=['one', 'two', 'three', 'four'], columns=['a', 'b', 'c', 'd'])
# >>>
a b c d
one
two
three
four
# 根據column選取一列, 傳回一個Series
df['order_id']
# >>>
# 可以同時選擇多列
df[['order_id', 'price']]
# 用index選擇單行,或用切片方式選擇多行
df[['order_id', 'price']][:]
df[df['price'] > ]
# >>>
date order_id price
--
--
# isin 和取反
df[~df['order_id'].isin(['1','2'])]
# 删除列
df.drop('price')
# 添加列
df['month'] = df['date'].apply(lambda x : str(x)[:])
# 替換
df.replace({"2003-05-10": "2008-08-08"}, regex=True, inplace=True)
df.dtypes # 每列資料類型
df.shape # 行數列數
df.columns.values # 列名
df.values
df['price'].sum()
# 類似的有
count, max, min, mean
sort_values(['column'], ascending=False)
reset_index() # 重建立立索引
drop_duplicates() # 去重
df.groupby(['departure'])['tkt_nbr'].count().reset_index().sort_values(['tkt_nbr'], ascending=False).reset_index()
# right join
right_join_df=df.merge(right=df2, how="right", on="id")
# 或
right_join_df=df.merge(right=df2, how="right", left_on="id",right_on="id")
# how可選: 'left', 'right', 'inner', 'outer'
df=pd.read_csv(filePath,sep=',',names=['colNameA','colNameB'...])
df=pd.read_json(filePath, lines=True)
df=pd.read_sql(sql=sql,con=conn)
df.to_csv("csvResult.csv",index=False,header=True,sep=',',encoding='utf-8-sig')
df.to_json(path_or_buf="jsonData.json",orient='records', lines=True)