现在总结一下,之前使用过的pandas常用方法,或者小技巧。
看一个例子:
# @Time :2018/10/27 # @Author :LiuYinxing import pandas as pd def demo(): df = pd.DataFrame({'name':['tom', 'jok', 'cat', 'car'], 'score': [98, 66, 78, 100]}) # 创建一个DataFrame # 获取 name = tom, cat 的信息 getdata = df[df['name'].isin(['tom', 'cat'])] print(getdata) # 获取 66 < score < 100 的信息 getdata = df[(df['score'] > 66) & (df['score'] < 100)] print(getdata) # 获取 score == 66 or score == 100 的信息 getdata = df[(df['score'] == 66) | (df['score'] == 100)] print(getdata) if __name__ == '__main__': demo()注意:pandas按条件获取多行数据时,一般要用数学逻辑符号,例如:&、|。逻辑符号不能用 and、 not等。
看例子:
# @Time :2018/10/27 # @Author :LiuYinxing import pandas as pd def demo(): df = pd.DataFrame({'name':['tom', 'jok', 'cat', 'car'], 'score': [98, 66, 78, 100], 'score1': [98, 66, 78, 100]}) # 创建一个DataFrame print(df) # 删除列 -- pop 修改发生在原始的对象上。 df.pop('name') print(df) # 按照列名 -- 进行多列删除 # -- axis=1 表示按列方向、 # -- inplace=True 表示在原数据上修改 df['name'] = ['tom', 'jok', 'cat', 'car'] df.drop(['score', 'score1'], axis=1, inplace=False) print(df) # 按照序号 -- 进行多列删除 col = [1, 2] # 要删除的列号 df.drop(df.columns[col], axis=1, inplace=False) print(df) df = pd.DataFrame({'name':['tom', 'jok', 'cat', 'car'], 'score': [98, 66, 78, 100], 'score1': [98, 66, 78, 100]}) # 创建一个DataFrame # 删除行 -- drop 原始对象不变,返回删除后的对象。 df.drop(0) # 删除多行 df.drop([0, 1], inplace=True) # 默认axis=0 print(df) if __name__ == '__main__': demo()注意:pandas 在列删中pop()是在原实例上的操作,而行删除drop(),默认是返回删除之后的结果,不修改之前的实例,此外还有一点是,如果 index 有重复的,则会删除多行。其他用法可以继续探究:
drop(self, labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise') # 参数不在解析>_<pandas 提供的 pd.merge() 函数,可以实现类似于SQL中的join操作。
merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)主要参数解析:
参数含义备注left 、right要合并的两个DataFrame对象on按某一列连接两个pd要存在相同的列名,可以是多列left_on、right_on用那一列作为键可以是列名left_index 、right_index使用哪个pd的索引作为键how连接方式 left, right,outer(类似于并集),inner(类似于交集)与SQL中join操作的连接一样sort对结果进行字典排序有时可提高性能python例子:
# @Time :2018/10/28 # @Author :LiuYinxing import pandas as pd def demo(): df1 = pd.DataFrame({'name': ['tom', 'jok', 'cat', 'car'], 'score1': [98, 66, 78, 100]}) # 创建一个DataFrame对象 df2 = pd.DataFrame({'name': ['tom', 'jok', 'cat'], 'score2': [98, 66, 78]}) # 创建一个DataFrame对象 rs = pd.merge(df1, df2, on='name', how='left') rs = rs.fillna(0) # 缺失值 补全 print(rs) if __name__ == '__main__': demo()还是看例子吧:
# @Time :2018/10/28 # @Author :LiuYinxing import pandas as pd def demo(): df = pd.DataFrame({'name': ['tom', 'jok', 'cat', 'car'], 'score': [98, None, 78, None]}) # 创建一个DataFrame对象 # 缺失值 填充 rs = df.fillna(0) # 缺失值 填充为 0 print(rs) rs = df.fillna(method='pad') # 缺失值 填充向前看齐 print(rs) rs = df.fillna(method='bfill') # 缺失值 填充向后看齐 print(rs) # 缺失值 查询 print(df['score'].isnull()) print(df['score'].notnull()) # 删除缺失值 # dropna函数,其中axis参数默认axis = 0行上操作(删除正行,1 则删除整列) rs = df.dropna(axis=0) # 缺失值 行删除 print(rs) rs = df.dropna(axis=1) # 缺失值 列删除 print(rs) if __name__ == '__main__': demo()注意:上面这些操作,不在原始的实例上处理,则是返回删除之后的结果。
astype强制转换,适合多列。
df[['A', 'B']] = df[['A', 'B']].astype(float)声明: 总结学习,有问题或不妥之处,可以批评指正哦。
官方学习链接 , 其他学习链接