​python 系列-100条处理dataframe的语句

​python 系列-100条处理dataframe的语句

数据集处理、筛选

import pandas as pd

import numpy as np

dates = pd.date_range('1/1/2000', periods=8)

# 建立一个时间序列,从20000101开始,8个数据

df = pd.DataFrame(np.random.randn(8, 4),index=dates, columns=['A', 'B', 'C', 'D'])

# 随机生成8*4的数组,数据的索引设置为dates,列名为['A', 'B', 'C', 'D']

s = df['A']

# 取出df中名字为”A“的那一列

df.loc[:, ['B', 'A']] = df[['A', 'B']].to_numpy()

# 数据集中的两列数据交换名字

df[:3]

# 取出数据集中的前3行

df.loc['2000-01-01':'2000-01-04']

# 通过索引选择行

df.loc ['2000-01-01':]

# 选择索引“2000-01-01”之后全部的数据



df1 = pd.DataFrame(np.random.randn(6,4),index = list('abcdef'),columns = list('ABCD'))

#生成一个数据集

df1.loc['d':, 'A':'C']

# 选择索引是“d"之后,以及列为”A"到“B"的列

df1.loc['a']

# 选择索引为a的哪一行

df['A'][0] = 111

# 替换数据集中的值



df1.A.loc[lambda s: s > 0]

# 数据集中A列大于0的值取出来

df[df['A'] > 0]

# 筛选数据集中A大于0 的数据



values = ['a', 'b', 1, 3]

df.isin(values)

# 判断df中的值是否在value这个list里面,value可以是list也可以是json



df.where(df < 0, -df)

# 将数据集中的小于0的数据取出来之后,这些值不改变,那些不满足小于0的加上负号

 df_orig.where(df > 0, -df, inplace=True)

# 将数据集中的小于0的数据取出来之后,这些值不改变,那些不满足小于0的加上负号,并且更改到原始数据集中

 df1.where(lambda x: x > 4, lambda x: x + 10)

# 将数据集中的大于4的数据取出来之后,这些值不改变,那些不满足小于0,加上10

 df[(df.a < df.b) & (df.b < df.c)]

# 取出数据集中,b大于a c大于b的行,a b c这里是列名

df.query('(a < b) & (b < c)')

# 取出数据集中,b大于a c大于b的行,a b c这里是列名

df.index.name = 'a'

# 给与数据的索引加上名字

df[df.a.isin(df.b)]

# 筛选出数据集a中有,b中也有的值

 df[~df.a.isin(df.b)]

# 筛选出数据集a中有,b中没有的值

df.query('a not in b')

# 筛选出数据集a中有,b中没有的值

df[df.b.isin(df.a) & (df.c < df.d)]

# 筛选出数据集a中有,b中也有的值,并且d大于c的数据,这里的abcd代表的是列名

df.query('year > 2012 | name == "Frank"')

# 筛选出数据集中year>2012或者name=Frank的数据

df2.drop_duplicates('a')

# 去重,默认保留重复中第一条

df2.drop_duplicates('a', keep='last')

# 去重,保留重复中最后一条

df2.drop_duplicates('a', keep=False)

# 数据集保留a列中没有重复部分

df2.drop_duplicates(['a', 'b'])

# 两列去重

 

#数据集索引


 

data.set_index('c')

# 令数据集中的c列为索引

data.set_index(['a', 'b'])

# 令数据集中的a,b列为索引

data.set_index('c', drop=False)

# 令数据集中的c列为索引,删掉原先的索引

data.reset_index(drop=True)

# 重置索引,原先的索引删除

data.reset_index(drop=False)

# 重置索引,原先的变成数据集的列

 

#数据集合并

pd.concat(df1, df2, df3)

# 横向合并数据集,相同列部分自动追加数据集后面

pd.concat([df1, df4], axis=1, join='inner')

# 合并之后只取相同部分,合并以索引为主键   

df1.append(df4, sort=False)

# 追加之后不排序,默认是不排序

df1.append([df2, df3])

# 同时追加两个数据集

df1.append(df4, ignore_index=True, sort=False)

# 忽略原先数据集的索引,重新建立索引



pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,left_index=False, right_index=False, sort=True,

         suffixes=('_x', '_y'), copy=True, indicator=False,validate=None)

pd.merge(left, right, on='key')

# 通过两个数据集共同的列“key"匹配,默认内交

pd.merge(left, right, on=['key1', 'key2'])

# 通过两个数据集共同的列“'key1', 'key2'"匹配,默认内交

pd.merge(left, right, how='left', on=['key1', 'key2'])

# 左交,通过两个数据集共同的列“'key1', 'key2'"匹配

pd.merge(left, right, how='right', on=['key1', 'key2'])

# 右交,通过两个数据集共同的列“'key1', 'key2'"匹配

pd.merge(left, right, how='outer', on=['key1', 'key2'])

# 全连接,通过两个数据集共同的列“'key1', 'key2'"匹配

pd.merge(left, right, left_index=True, right_index=True, how='outer')

# 通过索引全连接

pd.merge(left, right, on='k', suffixes=['_l', '_r'])

# 在链接过程中出现相同列名,可在suffixes定义后缀以区分

 

#数据集空值

df2['one'] == np.nan

# 判断数据集“one”列中为空,反馈布尔序列

df2.dtypes.value_counts()

# 对数据集中的变量类型做统计

dff.fillna(dff.mean())

# 给数据集中缺失的值填上平均值

df.dropna(axis = 0)

# 数据集变量中有缺失哪一行删掉

df.dropna(axis = 1)

# 数据集变量中有缺失哪一列删掉

df.replace(1.5, np.nan)

# 数据集中1.5的数值替换成空值

df.isnull()

# 返回数据集值对应位置是否为空

df[df['year'].notnull()]

# 筛选出数据集中year变量不为空的数据

df.isna().sum()

# 计算每一列空值的数量

 

#数据集属性

 df_cat.dtypes

#     查看数据集中个列的类型

df.astype('category')

# 转化数据集中列的类型

dfs.sort_values(by=['A', 'B'])

# 数据集按照A B两列排序

df['A'].value_counts()

# 计算数据集中各个类别的数量

df.groupby("cats").mean()

# 计算数据集中“cats"中每个类别的平均值

df.shape

# 数据集的行列数量

df.columns

# 数据集中的列名

df.name.unique()

# 变量name的唯一值



 df.sum()

# 数据集求和

 df.min()

# 数据集最小值

 df.max()

# 数据集最大值

df.describe()

# DataFrame的统计摘要,包括四分位数,中位数等

df.mean()

# 平均值

 df.median()

# 中间值

df.applymap(np.sqrt)

# 返回数据集全部的数值的平方根



df.head()

# 显示数据集的前5行

df.tail()

# 显示数据集的后5行



df_renamed = df.rename(columns = {'Id'          : 'TransactionId', 

                                                 'MSSubClass'  : 'BuildingClass',

                                                 'OverallQual' : 'OverallQuality'} 

)

# 数据集重命名

 

#数据集导入导出

pd.read_csv("nba.csv", index_col ="Name")

# 导入数据集并且定义“name"为索引

pd.to_csv(name_of_the_file_to_save.csv')

# 导出数据集

xlsx = pd.ExcelFile('your_excel_file.xlsx')

df = pd.read_excel(xlsx, 'Sheet 1')

# 导入excel格式数据集

数据增删改减       

df.drop('Country', axis = 1)

# 删除Country这一列

df.drop('Country', axis = 0)

# 删除Country为索引的这一行

del df ['name']

# 删除列‘name'

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值