Python 随手记

随手记

  • 注意点
    • &、| 是位运算,and、or是逻辑运算
      • and\or 短路计算
        1.在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
        1. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
    • is 判断是否是否一个对象,== 比较值是否相等
      • 若果 a is b 为真,则 a == b 亦为真
    • return 只能用在function里
    • 读取excel中文乱码,由于excel一般是gbk编码无utf-8,pd.read_csv读取时设置参数enconding='gbk'
    • 字符串前加 r 可以防止转义
    • 中文字符前加u代表以unicode格式存储
    • 删除变量:del
    • 数据读取 encoding成 'utf_8_sig'
    • 索引、视图、副本

内置

  • List

    • list相加相当于合并list (list.extend())
    > [] + [1] + [2,3]   
      [1,2,3,4]
    
  • String

  • s.join() # 字符联接

  • yield

    • 迭代器(list,string,tuple),可迭代
    • 生成器自动实现了迭代器协议,是可迭代的对象。生成器可以一边计算一边生成,节省了内存。
    • 带有 yield 的函数就是一个生成器函数,它不会执行任何函数代码,直到对其调用 next()(在 for 循环中会自动调用 next())才开始执行。每执行到一个 yield 语句就会中断,并返回一个迭代值,下次执行时从 yield 的下一个语句继续执行
  • map(func, seq1[, seq2...])

    • 将func作用于seq的每一个元素中,并以列表形式返回。
    • func为None时相当与zip()
  • reduce(func, seq[, int])

    • reduce每次迭代将上一次的迭代(第一次为int, 若无int则取seq第一个元素)结果与下一个元素传入func中。
    • e.g. 阶乘计算 reduce(lambda: x * y, range(1, n+1))

Ipython

ctrl /       -- 注释
  • Magic Commands
%time 计算耗时

Pandas

  • 空值处理
df.isnull().any()    是否存在空值
df.isnull().sum()    统计空值个数
df.fillna(value)    空值填充  
    # value : scalar, dict, Series, or DataFrame
    # e.g. df.fillna(df.mean())
  • 数据探查
df.info()    基本信息
df.describe()    基本统计信息
df.get_dtype_counts()    统计数据类型
df.select_dtype(include=['O', 'int64'])    选取特定类型数据, include/exclude 的值为list
df.select_dtypes(include = ['O']).apply(lambda x: len(x.unique()))    变量不同值的个数
apply(pd.Series.nunique())    变量不同值个数    len(unique())  #faster 
pd.Series.value_counts()
pd.Series.pct_change()    # 环比
  • 数据合并
pd.concat()    # 按指定 axis 合并,axis=1代表列合并
pd.merge()    # 按列索引合并(SQL)
pd.join()    # 多用于 行index
  • 数据处理
pd.replace()    值替换 # 可事先构造mapping_dict = {'F1':{'A':0, 'B':1}, 'F2':{1:9, 2:8}}
pd.Series.map({})
df.drop_duplicates(subset=)    去除重复值
pd.pivot_table()    数据框重塑
pd.groupby().fun().unstack()
pd.rest_index()
  • 可视化
df.hist()    绘制柱状图
df.plot.bar(figsize=(,), stacked=True)
df.plot(kind)    # kind: 'line', 'bar', 'barh', 'kde'
fig, (axis1,axis2) = plt.subplots(1,2,figsize=(15,4))    # 多幅图设置图片坐标
  • 日期时间处理
pd.to_datetime(Series/String,  error=)    # 转成日期格式
datetime.weekday();  datetime.weekday_name    # 转成星期
datetime.quarter();    # 季度
datetime.weekofyear();    # 周
pd.Series.dt.weekday  # use .dt to access properties
pd.date_range(start=None, end=None, periods=None, freq='D')

numpy

  • 数值计算
np.log1p()    # Return the natural logarithm of one plus the input array

scipy

  • 数据统计
    scipy.stats.skew() 计算峰度
  • sparse 数据处理
from scipy import sparse
sparse.hstack().tocsr()    # stack sparse matrices horizontally
注: 稀疏矩阵存储: compressed sparse row (CSR),Coordinate(COO)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容