- 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)