Python Pandas数据处理常用操作代码

常识

  1. 使用pandas.read_csv从csv文件中读取数据,对于csv中缺失的空值,读进dataframe会自动补为numpy.nan,且数据类型为float

操作

  1. 读取csv文件,存储为dataframe数据类型
df = pandas.read_csv(csv_path)
  1. 查看csv文件的dataframe的所有列字段名
print(df.columns)
  1. 按行遍历dataframe
for row in df.itertuples():

可以用row.column_name访问该行具体的列(column_name无需加引号)

  1. 删除dataframe的指定整列数据
df = df.drop(['city', 'region', 'iso_country_code'], axis=1)
# 删除列 'city', 'region', 'iso_country_code'
# 这里的删除其实并没有对df本身作出任何改变,而是将df进行拷贝,将拷贝的副本进行了列删除操作,所以这里一定要赋值给一个新的df,仅仅用df.drop并不能改变df
  1. 根据某个字段的值的集合条件筛选出符合条件的目标行,以构成新dataframe
# 使用isin()方法筛选匹配的行
new_df = df[df['placekey'].isin(mht_poi_list)]
# 筛选出df中 placekey字段的值在列表mht_poi_list中的记录行,以构成一个新dataframe new_df
new_df = new_df.reset_index(drop=True)
# 经过筛选而得到的dataframe索引很乱,不连续,这里的操作是在重排索引
  1. dataframe指定位置插入一整列
df.insert(loc=6, column='top_category_id', value=cate1_ids)
# loc 位置
# column 列名
# value 数据来源 (这里一般我习惯用list,要求list的长度要与dataframe的行数目一致)
  1. 将dataframe数据写入csv文件
df.to_csv(csv_path, index=False)  # 不把行索引信息写入csv文件
df.to_csv(csv_path, index=True)  # 把行索引信息写入csv文件
  1. 使用list构建dataframe
df = pandas.DataFrame(data, columns=['head', 'relation', 'tail'])
# data是一个list,data这个list里面的元素也是一个个list,每一个list表示一行数据
# columns 表示列名 
# data里面的list中的元素放置位置要与columns一致
  1. 判断dataframe的具体某一字段的所有值是否存在重复,判断具体某一字段的所有值是否都是唯一的
duplicates = data['placekey'].duplicated() # 查看data这个dataframe的‘placekey’字段每个值是否存在重复,如果是重复的,返回True,如果不是重复的,返回False

请添加图片描述

has_duplicates = duplicates.any()

也可以通过调用any()函数来检查返回的布尔Series是否包含任何True值,以确定是否存在重复值。
请添加图片描述

  1. 判断csv中具体某一个字段中是否存在空值
    方法一:
# 记录'location_name'字段下的空值数量
null_count = data['location_name'].isnull().sum()
print(null_count)
# 如果输出0的话,表示该字段下不存在空值

方法二:

# 挨个判断'location_name'字段下的每个值是否为空值,返回一个n x 1的向量,n是总行数,向量中的true表示值为空,false表示值为不空。
# 如果返回的这个向量,每一个值都是false,则表示该字段下的每个值都不为空
empty_score = data['location_name'].isnull()
if empty_score.any():   
# 这个函数是用来判断返回的这个向量里是否存在一个true值,如果存在一个true值,则返回true,若一个true都没有,则返回false
# 如果该字段下没有空值,则该函数应该返回false
    print('There are empty values in the location_name column.')
else:
    print('There is no empty value in the location_name column.')