pandas 一些使用记录

在这里插入图片描述
以 DataFrame 为例,它的一般语法为:

df.apply(func, axis=0, args=(), **kwds)

参数有:

  • func:函数,应用于每列或每行的函数
  • axis:{0 or ‘index’, 1 or ‘columns’}, 默认为 0, 应用函数的轴方向
  • 0 or ‘index’: 按行
  • 1 or ‘columns’: 按列
  • args: func 的位置参数
  • **kwds:要作为关键字参数传递给 func 的其他关键字参数

对各行应用函数

在这里插入图片描述

对每个值应用函数

在这里插入图片描述

更新列值

在这里插入图片描述

df.join(other , on = None , how = 'left' , lsuffix = '' , rsuffix = '' , sort = False )

上述方法参数表示的含义如下:

  • on:用于连接名。 //如果两个表中行索引和列索引重叠,那么当使用join()方法进行合并时,使用参数on指定重叠的列名即可
  • how:可以从{“left”,“right”," outer",“inner”} 中任选一个,默认使用left的方式。
  • lsuffix:接收字符串,用于在左侧重叠的列名后添加后缀名。
  • rsuffix:接收字符串,用于在右侧重叠的列名后添加后缀名。
  • sort:接收布尔值,根据连接键对合并的数据进行排序,默认为False。
    join()方法默认使用的左连接方式,即以左表为基准,join()方法进行合并后左表的数据会全部展示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=<no_default>, observed=False, dropna=True)

参数
by:映射、函数、标签或标签列表
用于确定groupby的组。Ifby是一个函数,它会在对象索引的每个值上调用。如果传递了 dict 或 Series,则 Series 或 dict VALUES 将用于确定组(首先对齐 Series 的值;请参阅.align()方法)。如果传递了 ndarray,则按原样使用这些值来确定组。标签或标签列表可以按 中的列传递给 group self。请注意,元组被解释为(单个)键。

axis:{0 或 ‘index’, 1 或 ‘columns’},默认为 0
沿行 (0) 或列 (1) 拆分。

level:int, level name, or sequence of such, 默认无
如果轴是 MultiIndex(分层),则按特定级别或多个级别分组。

as_index:bool,默认为 True
对于聚合输出,返回带有组标签的对象作为索引。仅与 DataFrame 输入相关。as_index=False 是有效的“SQL 风格”分组输出。

sort:bool,默认为True
对组键进行排序。关闭此功能可获得更好的性能。请注意,这不会影响每个组内的观察顺序。Groupby保留每个组中行的顺序。

group_keys:bool,默认为 True
调用 apply 时,将组键添加到索引以识别片段。

squeeze:bool,默认为 False
如果可能,减少返回类型的维度,否则返回一致的类型。

自 1.1.0 版起已弃用。
observed:bool,默认为 False
这仅适用于任何石斑鱼是分类鱼的情况。如果为 True:仅显示分类石斑鱼的观察值。如果为 False:显示分类石斑鱼的所有值。

dropna:bool,默认为真
如果为 True,并且组键包含 NA 值,则 NA 值和行/列将被删除。如果为 False,NA 值也将被视为组中的键

1.1.0 版中的新功能。
agg 聚合操作

  • min 最小值
  • max 最大值
  • sum 求和
  • mean 均值
  • median 中位数
  • std 标准差
  • var 方差
  • count 计数
    -在这里插入图片描述
df.transform(func, axis=0, *args, **kwargs)
  • axis:{0 or ‘index’, 1 or ‘columns’}, default 0
    如果为 0 或 ‘index’:将函数应用于每一列。如果为 1 或“列”:将函数应用于每一行。
    根据A列分组后的B列求和新增b_sum列,两种算法,transform能更快的计算
    在这里插入图片描述
    在这里插入图片描述
df.map()
df= pd.DataFrame(
{"name":['Jack', 'Alice', 'Lily', 'Mshis', 'Gdli'],
"gender":['F', 'M', 'F', 'F', 'M'],
"age":[25, 34, 49, 42, 28]}
#定义F->女性,M->男性的映射字典
gender2xb = {'F': '女性', 'M': '男性'}
#利用map()方法得到对应gender列的映射列
df.gender.map(gender2xb)
0    女性
1    男性
2    女性
3    女性
4    男性
df.gender.map(lambda x:'女性' if x == 'F' else '男性')
#年龄的平方
df.age.map(lambda x: x**2)

df.gender.map("This kid's gender is {}".format)
0    This kid's gender is F
1    This kid's gender is M

s = pd.Series(['cat', 'dog', np.nan, 'rabbit'])
 s
0      cat
1      dog
2      NaN
3   rabbit

s.map('I am a {}'.format)
0       I am a cat
1       I am a dog
2       I am a nan
3    I am a rabbit

在这里插入图片描述

pd.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)

参数

  • sql:str 或 SQLAlchemy Selectable(选择或文本对象)
    要执行的 SQL 查询或表名。

  • con:SQLAlchemy 可连接、str 或 sqlite3 连接
    使用 SQLAlchemy 可以使用该库支持的任何数据库。如果是 DBAPI2 对象,则仅支持 sqlite3。用户负责 SQLAlchemy 可连接的引擎处理和连接关闭;str 连接会自动关闭。见 这里。

  • index_col:str 或 str 列表,可选,默认值:无
    要设置为索引(MultiIndex)的列。

  • coerce_float:bool,默认为 True
    尝试将非字符串、非数字对象(如 decimal.Decimal)的值转换为浮点数,这对 SQL 结果集很有用。

参数列表,元组或字典,可选,默认:无
传递给执行方法的参数列表。用于传递参数的语法取决于数据库驱动程序。检查您的数据库驱动程序文档,了解支持 PEP 249 的 paramstyle 中描述的五种语法样式中的哪一种。例如。对于 psycopg2,使用 %(name)s 所以使用 params={‘name’ : ‘value’}。

  • parse_dates:列表或字典,默认值:无
    要解析为日期的列名列表。

在解析字符串时间的情况下,格式字符串与 strftime 兼容的字典,或者在解析整数时间戳的情况下是 (D, s, ns, ms, us) 之一。{column_name: format string}

-Dict of ,其中 arg dict 对应于关键字参数 对 没有本地日期时间支持的数据库特别有用,例如 SQLite。{column_name: arg dict}pandas.to_datetime()

  • 列:列表,默认值:无
    要从 SQL 表中选择的列名列表(仅在读取表时使用)。

  • chunksize:int,默认无
    如果指定,则返回一个迭代器,其中chunksize是要包含在每个块中的行数。

from sqlalchemy import create_engine
db_info = {'user': 'root',
            'password': 'root',
            'host': 'localhost',
            'port': 3306,
            'database': 'xqfj'
            }
engine = create_engine('mysql+pymysql://%(user)s:%(password)s@%(host)s:%(port)d/%(database)s?charset=utf8' % db_info, encoding='utf-8')
df = pd.read_sql('select * from users', engine, parse_dates=["register_time"])

在这里插入图片描述

pd.merge( left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None,)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

# 删除id列数据
df.drop(columns=['id'])
# 插入开头列
df.insert(0,'d',[1,2])
# 插入结尾列
df.insert(data.shape[1], 'd', 0)
pd.pivot(data, index=None, columns=None, values=None)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

pd.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)[source]
df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'},
                   'B': {0: 1, 1: 3, 2: 5},
                   'C': {0: 2, 1: 4, 2: 6}})
pd.melt(df, id_vars=['A'], value_vars=['B'])
pd.melt(df, id_vars=['A'], value_vars=['B', 'C'])

在这里插入图片描述

pd.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None, method=None)
from sqlalchemy import create_engine
engine = create_engine('sqlite://', echo=False)
df = pd.DataFrame({'name' : ['User 1', 'User 2', 'User 3']})
df.to_sql('users', con=engine)
engine.execute("SELECT * FROM users").fetchall()
# [(0, 'User 1'), (1, 'User 2'), (2, 'User 3')]

日期

dates = pd.date_range('20210929', periods=6)
dates
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
df
# 行转列
df.T

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 排序
df.sort_values(by='B')

在这里插入图片描述

# 查看当前时间是否在某个时间段
import time
current_time = time.strftime('%Y-%m-%d', time.localtime())
a = pd.to_datetime([time.strftime('%Y-%m-%d', time.localtime())]).isin(pd.date_range('20210909', '20210930'))
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值