python 使用小技巧(动态更新)

一、pandas

1、 找出含有特定字符串的行
res=res[res['choice'].str.contains("<img")]
2、找出第一个字符是 ‘9’ 的行
res=res[res['choice'].str[0] == '9']
3、提高多层行索引的 DataFrame 的搜索效率
         col
one two     
c   u      9

对于以上结构的两层行索引 DataFrame,采用 data.loc[(c, u), col] 取数据时,一般情况下会触发如下警告:

PerformanceWarning: indexing past lexsort depth may impact performance.

这是因为索引没有排序,而是否排序对 DataFrame 的检索效率有较大影响,只要按如下:

data = data.sort_index() 

给索引排个序就可消除该警告。

4、pandas 与 numpy 计算标准差时的差别

pandas.std 默认 ddof=1,就是无偏的估计(n-1)
numpy.std 默认 ddof=0,就是有偏的估计(n)
在混合使用 numpy 和 pandas 时注意默认值的差异。

5、数据输出时列无法对齐
In[76]: ires_df
Out[76]:
          行业因子平均解释力
交通运输       0.007395
传媒         0.014366
农林牧渔       0.005049
医药         0.019094
商贸零售       0.002312
国防军工       0.003610
基础化工       0.007108

目前 pandas 对中文的支持还不完美,当列名用中文之后,输出时数据没有对齐,改进办法就是对pandas的输出参数进行设定。

import pandas as pd
 
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)

ires_df
                  行业因子平均解释力
交通运输                    0.007395
传媒                        0.014366
农林牧渔                    0.005049
医药                        0.019094
商贸零售                    0.002312
国防军工                    0.003610
基础化工                    0.007108

改进之后的格式有所改善,但是仍然有继续改进的空间。

二、numpy

1、一维数组的转置
import numpy as np

a = np.array([1, 2, 3, 4, 5])
print(f'1.原始数组 a = {a}')
print(f'2.原始数组的常规转置 a.T = {a.T}')
print(f'3.原始数组的标准转置 a.reshape(len(a), 1) = ')
print(a.reshape(len(a), 1))
print(f'4.原始数组的快捷转置 a[:, None] = ')
print(a[:, None])
Out[45]:
1.原始数组 a = [1 2 3 4 5]
2.原始数组的常规转置 a.T = [1 2 3 4 5]
3.原始数组的标准转置 a.reshape(len(a), 1) = 
[[1]
 [2]
 [3]
 [4]
 [5]]
4.原始数组的快捷转置 a[:, None] = 
[[1]
 [2]
 [3]
 [4]
 [5]]

三、dict

1、批量赋值

有一个字典,需要根据这个字典来构建一个对象。

class Person:
    def __init__(self,_obj):
        self.name = _obj['name']
        self.age = _obj['age']
        self.energy = _obj['energy']
        self.gender = _obj['gender']
        self.email = _obj['email']
        self.phone = _obj['phone']
        self.country = _obj['country']

利用__dict__的特性,上面的类可以用如下的代替,代码量大大减少:

class Person:
    def __init__(self,_obj):
        self.__dict__.update(_obj)

(笔记:简单地说,就是结构相同的两个 dict 变量之间赋值,用 dict 整体赋值效率最高)

免了在__init__方法中类似于self.something = something的方法,使用自动化实例变量

其中的__init__方法传入的参数args为dict对应于实体model中的key,value

参考自:
https://blog.csdn.net/zhangvalue/article/details/95217606

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值