pandas 入门

  • pandas 数据结构

    series(一维), DataFrame(二维), Panel(少用)

  • 输出不显示省略号

# 行或列的数量多的时候,pandas 的输出会默认用省略号代替
pandas.set_option('display.max_rows',None)
pd.set_option('display.max_colwidth',None)
  • 创建
order_list = [
    {'order_id': 1, 'price': 100, 'date': '2018-01-01'},
    {'order_id': 2, 'price': 200, 'date': '2018-01-02'},
    {'order_id': 3, 'price': 300, 'date': '2018-01-05'},
    {'order_id': 4, 'price': 400, 'date': '2018-01-01'},
]

import pandas as pd
df = pd.DataFrame(order_list)
# >>> 
         date  order_id  price
0  2018-01-01         1    100
1  2018-01-02         2    200
2  2018-01-05         3    300
3  2018-01-01         4    400
# 横向的称为列(column), 纵向的称为索引(index)

# 使用 list(dict) 生成,dict的key为column, index自动递增生成
# 使用 嵌套字典生成,外层key为column, 内层key为index 

# 也可以命名行和列
import numpy as np
df = pd.DataFrame(np.arange(16).reshape((4,4)), index=['one', 'two', 'three', 'four'], columns=['a', 'b', 'c', 'd'])
# >>>
        a   b   c   d
one     0   1   2   3
two     4   5   6   7
three   8   9  10  11
four   12  13  14  15
  • 选取
# 根据column选取一列, 返回一个Series
df['order_id']
# >>>
0    1
1    2
2    3
3    4

# 可以同时选择多列
df[['order_id', 'price']]

# 用index选择单行,或用切片方式选择多行
df[['order_id', 'price']][1:4]
  • 条件筛选
df[df['price'] > 200]
# >>>
         date  order_id  price
2  2018-01-05         3    300
3  2018-01-01         4    400

# isin 和取反
df[~df['order_id'].isin(['1','2'])]
  • 修改
# 删除列
df.drop('price')

# 添加列
df['month'] = df['date'].apply(lambda x : str(x)[5:7])
# 替换
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()
  • join
# 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)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值