python小白的入门(二):pandas常用函数

六眼飞鱼酱① 提交于 2020-02-05 16:17:42
  1. 读取
    df = pd.read_csv(‘文件名’,encoding = ‘utf’/‘gbk’/,sep=’\t’)

  2. 查看基本信息
    df.info()
    df.head()
    df.describe()
    df.列名.value_counts()

  3. 更改某一列的数据类型(series下)
    df.列名.astype(‘str’/‘int’)

  4. 排序
    df.sort_values(by = 列名/列表,ascending=True/False)
    df.sort_index()索引排序

  5. 排序赋值(series下)
    df[‘rank’]= df.列名.rank(method='average/‘max’/‘min’/‘first’,ascending=False)

  6. 分组统计(pandas下)
    df[‘bins’] = pd.cut(df.列名,bins=5/[0,5,10,15,20,100],labels=[‘0-5’,‘5-10’,‘10-15’,‘15-20’,‘20-100’])

  7. 多重索引
    用groupby建多重索引:
    df.groupby(分组列表).聚合函数为DataFrame类型,之后可用.loc[一级标签,二级标签]取值
    df.groupby(分组列表).聚合函数.列名为Series类型,之后可用[一级标签][二级标签]取值
    用set_index建多重索引:
    df.sort_values(分组列表).set_index(分组列表)
    用reset_index将索引变成列:
    df.reset_index()

  8. groupby
    df.groupby(列名)中包含两个类型的数据,第一个是tuple,存储的是索引;第二个是DataFrame,存储的是组内数据。
    因此可用以下循环语句对组内数据进行聚合运算:
    for i,j in df.groupby([‘city’,‘education’]):
    print(i)
    print(j.avg.max()-j.avg.min())
    print(j.workYear.value_counts())

  9. 多表连接
    merge:基于键值连接
    pandas函数和DataFrame函数
    pandas.merge(position,company,left_on=,right_on=,how=inner/outer/left/right)
    position.merge(company,left_on=,right_on=,how=inner/outer/left/right)
    tips1:当两个表要连接的列名不一致时用left_on和right_on,结果会保留两个列;当一致时用on即可,只保留一列。
    join:基于索引连接
    DataFrame函数
    position.join(company)
    tips2:当两个表中存在相同列时会报错
    concat: 简单粗暴的左右或上下堆叠
    pandas函数
    axis=0时为上下堆叠,相同列合并,行数累加,索引重复,主要用于时间数据的堆叠。
    axis=1时为左右堆叠,相同列不合并,和join相似
    tips3:当使用concat对多个月份数据堆叠时,别忘了修改索引。

  10. 缺失值
    填充缺失值:fillna,Series函数和DataFrame函数
    df.city.fillna(‘上海’)
    df.fillna(‘上海’)
    删除缺失值:dropna,Series函数和DataFrame函数
    df.city.dropna()
    df.dropna()

  11. 重复行
    查找重复行:
    df[df.duplicated()]
    删除重复行
    df.drop_duplicates(keep=‘first’/‘last’)

  12. 文本函数
    str:对值里的字符串进行处理,Series函数
    df.city.str[1:2]:删除第一个字,[1:-1]删除第一个和最后一个字
    df.city.str.replace(原字符,新字符)
    str.下有很多函数

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!