• pandas基础语法


    Series

    一维数据结构,包含行索引和数据两个部分.

    s = pd.Series([14, 15, 17],index=[u‘张某’, u‘李某’, u‘段某’])
    
    • 1

    DataFrame

    二维数据结构,包含带索引的多列数据,各列的数据类型可能不同

    df = pd.DataFrame([[22, u‘北京’, u‘律师’],[26, u‘四川成都’, u‘工程师’],[24, u‘江苏南京’, u‘研究员’]],index=[u‘张某’, u‘李某’, u‘段某’],columns=[u‘年龄’, u‘籍贯’, u‘职业’])
    
    • 1

    文件读写

    从CSV文件读取.

    pd.read_csv() | 
    # 参数:file,文件路径;sep,分隔符;index_col,用作行索引的一列或者多列;usecols,选择列;encoding,字符编码类型,通常为’utf-8’.
    
    • 1
    • 2

    制表符分隔文件读取,如TSV.

    pd.read_table() 
    
    • 1

    从Excel文件读取.

    pd.read_excel()  
    
    • 1

    从SQL表或数据库读取.

    pd.read_sql() 
    
    • 1

    从JSON格式的URL或文件读取.

    pd.read_json()  
    
    • 1

    从剪切板读取.

    pd.read_clipboard()  
    
    • 1

    写入CSV文件

    df.to_csv() 
    # 参数:file,文件路径;sep,分隔符;columns,写入文件的列;header,是否写入表头;index,是否写入索引.
    
    • 1
    • 2

    写入Excel文件

    df.to_excel()
    
    • 1

    写入SQL表或数据库

    df.to_sql() 
    
    • 1

    写入JSON格式的文件

    df.to_json() 
    
    • 1

    写入剪切板

    df.to_clipboard() 
    
    • 1

    数据索引

    在这里插入图片描述

    数据探索

    唯一值

    s.unique()
    
    • 1

    唯一值及其计数

    s.value_counts()
    ```.
    前n行数据
    ```python
    df.head(n)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    后n行数据

    df.tail(n)
    
    • 1

    随机采样的n行数据

    df.sample(n)
    
    • 1

    行数和列数

    df.shape
    
    • 1

    样本数、数据类型和内存占用等信息

    df.info()
    
    • 1

    描述性统计信息汇总

    df.describe()
    
    • 1

    筛选和过滤

    df.astype({u‘年龄’:‘int8’}) # 数据类型转换.
    df.index = [‘a’, ‘b’, ‘c’] # 修改行索引.
    df.columns = [‘a’, ‘b’, ‘c’] # 修改列索引.
    df.set_index() # 设置某一列为索引.
    df.reset_index() # 重置索引为自然数索引.
    df.reindex(index, columns=[‘A’, ‘B’]) # 根据index和columns进行重排.
    df.rename(index, columns={‘A’:‘B’})# 对行索引或列标签进行修改.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    排序和排名

    df.sort_index(axis=0) # 按照行索引进行排序.
    df.sort_values(‘A’, axis=0) # 根据“A”列值进行升序排列.
    df.sort_values(‘A’, ascending=False) # 根据“A”列值进行降序排列.
    df.rank(axis=0) # 返回元素在所属列的排名.
    
    • 1
    • 2
    • 3
    • 4

    层次化索引

    df.index = [[u‘法务部’, u‘研发部’, u‘研发部’], [u‘张某’, u‘李某’, u‘段某’]] # 创建层次化索引.
    df.index.names = [u‘部门’, u‘姓名’]# 创建行索引名称.
    df.swaplevel(0, 1) # 互换行索引级别.
    df.reorder_levels([1, 0]) # 重排行索引级别.
    df.xs(u‘年龄’, level=1, axis=1) # 根据某一层级进行交叉选择.
    
    • 1
    • 2
    • 3
    • 4
    • 5

    统计函数

    df.sum() # 求和.
    df.mean() # 均值.
    df.max() # 最大值.
    df.min() # 最小值.
    df.median() # 中位数.
    df.quantile([0.25, 0.75]) # 分位数.
    df.std() # 标准差.
    df.var() # 方差.
    df.cumsum() # 累和.
    df.mode() # 众数.
    df.corr() # 相关系数矩阵.
    df.cov() # 协方差矩阵.
    df.corrwith() # 不同Pandas对象之间的相关性.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    缺失值检测与处理

    df.isnull() # 判断每个元素是否为缺失值.
    df.notnull() # 判断每个元素是否为非缺失值.
    df.fillna({‘A’:1, ‘B’:22}) # 多列缺失值填补.
    df.dropna() # 删除缺失值所在行/列.
    # 参数:axis,操作轴,默认为横向,即丢弃行;how,丢弃方式;subset,考虑部分行和列;thresh,非缺失值数量下限.
    
    • 1
    • 2
    • 3
    • 4
    • 5

    数据合并

    merge
    pd.merge(left, right) # 类数据库的数据融合操作.
    #参数:how,融合方式,包括左连接、右连接、内连接(默认)和外连接;on,连接键;left_on,左键;right_on,右键;left_index,是否将left行索引作为左键;right_index,是否将right行索引作为右键.
    
    • 1
    • 2
    join
    left.join(right) # 在索引上的数据融合操作
    
    • 1
    combine_first
    left.combine_first(right)
    #在数据融合的同时(行索引和列索引取并集),使用right中的值填补left中相应位置的缺失值.
    
    • 1
    • 2
    轴向连接
    pd.concat([df1, df2]) # 轴向连接多个DataFrame.
    
    • 1

    轴向旋转和数据转换

    轴向旋转
    df.stack() # 将数据的列“旋转”为行.
    df.unstack() # 将数据的行“旋转”为列.
    
    • 1
    • 2
    数据转换
    s.map() # 利用函数或映射进行数据转换.
    df.applymap() # 利用函数或映射进行数据转换.
    df.replace() # 替换元素值.
    df.columns.map(str.upper) # 将列名转换为大写.
    
    • 1
    • 2
    • 3
    • 4

    数据聚合与分组运算

    df.groupby(‘A’) # 根据“A”列的值进行分组,并返回一个GroupBy对象.
    df.groupby([‘A’, ‘B’]) # 根据“A”列和“B”列的值组合进行分组,并返回一个GroupBy对象.
    df.groupby(‘A’)[‘B’].mean() # 根据“A”列的值进行分组,并计算每一组“B”的均值.
    df.groupby(‘A’).agg(np.mean) # 根据“A”列的值进行分组,并计算每一组中各列的均值.
    df.apply(np.mean) # 对DataFrame的每一列求均值.
    df.apply(np.mean, axis=1) # 对DataFrame的每一行求均值.
    df.pivot_table(index=‘A’, values=[‘B’, ‘C’], aggfunc=mean) # 创建数据透视表,根据“A”列的值进行分组,并计算每一组中“B”和“C”的均值.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    离散化和哑变量编码

    pd.cut(s, bins=[0, 5, 10],labels=[‘A’, ‘B’]) # 离散化和面元划分.
    pd.qcut(s, 2,
    labels=[‘A’, ‘B’]) # 等频离散化.
    pd.get_dummies(df, columns=[‘A’],
    drop_first=True)
    # 对“A”列进行哑变量编码,并去掉第一个编码特征.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    串联⽅法

    通过调⽤多个Pandas⽅法将多个处理过程串联起来.

    pd.merge(left, right, how=‘outer’,indicator=True).query(‘_merge == “left_only”’).drop([‘_merge’], axis=1)
    # 保留在left中但不在right中的行.
    
    • 1
    • 2

    ⽂本数据规整

    s.str.method
    ⽮量化字符串⽅法,可跳过缺失值,遇缺失值将不报错.

    s.str.lower() # 将所有元素转换为全部小写.
    s.str.upper() # 将所有元素转换为全部大写.
    s.str.replace() # 替换值.
    s.str.split(“ ”).str[0] # 空格分割,并取列表中
    的第一个元素.
    s.str.split(“ ”).str.get(0) # 空格分割,并取列
    表中的第一个元素.
    s.str.split(“ ”, expand=True) # 空格分割,并
    扩展为多列.
    s.str.contains(r‘\d’) # 利用正则表达式判断是否元素包含数字.
    s.str.extract(r‘(\d.), expand=False) # 利用正则表达式提取每个元素中的数字.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    数据可视化

    df.plot(kind=‘hist’) # 设置kind参数绘制直方图.
    df.plot.line() # 调用对象接口绘制折线图
    df.plot.scatter(‘x’, ‘y’) # 绘制x-y散点图.
    
    • 1
    • 2
    • 3

    包 括 图 形:面 积 图df.plot.area; 纵 向 柱 状 图df.plot.bar; 横 向 柱 状
    图df.plot.barh; 盒 图df.plot.box; 和 核 密 度 图df.plot.kde; 蜂 巢
    图df.plot.hexbin;饼图df.plot.pie.

  • 相关阅读:
    笔记(一)斯坦福CS224W图机器学习、图神经网络、知识图谱
    Java-对象的构造及初始化
    final关键字
    Cisco语音网关
    网络运维类面试非技术问题
    西瓜视频基于 Hertz 的微服务落地实践
    R语言拟合ARIMA模型并使用拟合模型进行预测推理、使用autoplot函数可视化ARIMA模型预测结果、可视化包含置信区间的预测结果
    Unity-FSM有限状态机
    JUC-CyclicBarrier基础篇
    springboot json在线转换为实体类
  • 原文地址:https://blog.csdn.net/weixin_47219875/article/details/126810145