数据分析 – pandas基本操作

这是我参与8月更文挑战的第25天,活动详情查看:8月更文挑战

这里主要介绍的是pandas对DataFrame的一系列操作

给表格加表头

如果表没有表头,一定要加上header = None,否则第一行会被作为表头

  1. 读取文件内容的时候重命名

    df = pd.read_excel(‘文件路径’, names = name([‘列1’,’列2’]) )

  2. 读取后命名

    df.columns = name

重置索引,覆盖原始数据

df.reset_index(drop = True, inplace = True)

删除某列

  1. del df[‘列名’]
  2. df.drop(‘列’, axis = 1) – 不改变原始数据
  3. df.drop(‘列’, axis = 1, inplace = True) – 覆盖掉原始数据

去掉某行全为空的情况

df.dropna(how=’all’, inplace = True)

处理异常值 – 删除/均值/高频值

  1. 均值 – df[‘列名’].fillna(df[‘列名’].mean(), inplace = True)
  2. 高频值 – df[‘列名’].value_counts().index[0] – 最高频的值

对某行格式进行转换

  1. 找到需要转换的所有数据 – 给表加一列判断列

    df[‘rows_with_lbs’] = df[‘weight’].str.contains(‘lbs’).fillna(False)
    df[‘weight’].str.contains(‘lbs’) – 找到weight列包含了lbs的行
    fillna(False) – 给NaN赋值为False

  2. iterrows() 遍历每行 – 通过rows_with_lbs可直接遍历出是lbs的行,返回序列和该序列本身的对象
    for i, lbs_row in df[rows_with_lbs].iterrows()

  3. 取出该对象的某列值进行转换
    weight = int(float(lbs_row[‘weight’][:-3])/2.2)

  4. 将转换后的值赋值给表对应那行 – df.at(i, ‘weight’)
    df.at(i, ‘weight’) = ‘{}kgs’.format(weight)

去除非ASCII字符

df[‘first_name’].replace({ r'[\x00 – \x7F]+’ : ” }, regex = True, inplace = True)
replace(旧值,新值, regex = True:支持正则表达式) r – 去除转义字符,多用于正则表达式
[\x00-\x7F]等同于[x00-x7F]: ASCII值从0-127的字符

唯一性:将一列有多个参数进行分割 – split(expand = True) – expand指将分割的内容作为一列

df[[‘first_name’, ‘last_name’]] = df[‘name’].str.split(expand = True)

去除重复数据行 – df.duplicates()

df.drop_duplicates([‘first_name’, ‘last_name’], inplace = True)

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享