python Pandas库使用总结


pandas是一个强大的python库,一定程度上方便表格读写和数据的解析合并处理

在这主要记录下日常经常使用的一些pandas方法和踩到的坑

pandas安装&使用
pip install pandas

import pandas as pd

1、pandas.read_csv('csv')
读取.csv文件,输出DataFrame

可指定读取列
pandas.read_csv('csv', usecols=[0,1]) 读取序列外的第一和第二列

dataframe.iloc[:6] 读取前5行

2、pandas.DataFrame(dict, index=[0])
将dict转为DataFrame输出
index=[0]是指索引从0开始,可自定义

3、dataframe.set_index('columns', drop=False, inplace=True)
将colunms列设置为新的序列,方便将colunms作为key转dict
当drop=False,inplace=True,colunms列仍保留

dataframe.reset_index(drop=True, inplace=False)
可以将更新序列的dataframe还原

4、删除包含NaN的行或列

axis=0 指对行操作
axis=1 指对列操作
dataframe.dropna(axis=0, how='any')

针对指定列
df.dropna(subset=[columns], axis=0)

5、dataframe[['columns']] = dataframe[['columns']].astype('float')
将columns列类型转换为float

6、dataframe.rename(columns={'c':'test_c'})
转换列名

7、dataframe合并

dataframe_a.merge(dataframe_b, how='left', left_on='c', right_on='c')


注:指定merge的left_on和right_on columns必须类型一致,否则merg数据异常

8、dataframe转dict
dataframe.to_dict('index')

dataframe.to_dict()

dataframe.to_dict('list')

根据实际需要使用

9、当columns出现多对多转dict时

dataframe.groupby('colunms').apply(lambda x:x.to_dict('r')).to_dict()
columns是作为key的那一列
没有合适数据不做演示

10、删除某特性值的行
dataframe[~dataframe['columns'].isin(['None'])]


取反思路
或:

"""
删除值为0的行
"""
df.drop(df[df[columns]==0].index, inplace=True)

11、DataFrame list行扩展成多行

""" 只能对两列的DataFrame进行列扩展 """
import numpy as np
new_value = np.dstack(np.repeat(dataframe.columns[0].values, list(map(len, dataframe.columns[1].values))), np.concatenate(d.columns[1].values))
pd.DataFrame(data=nv[0], columns=d.columns)
或:
"""
建议使用该方法,可对3列以上的DataFrame扩展
"""
import pandas as pd
import numpy as np

row_len = list(map(len, df[columns].values))
rows = list()
for c in df.columns:
    if c == columns:
        row = np.concatenate(df[c].values)
    else:
        row = np.repeat(df[c].values, row_len)
    rows.append(row)
new_df = pd.DataFrame(np.dstack(tuple(rows))[0], columns=df.columns)

12、查询符合条件数据

dataframe.query('columns[0] in {}'.format(rules))

13、根据相同值合并

dataframe.columns[1] = dataframe.columns[1].astype('str')
dataframe.groupby('fda_appl_no').apply(lambda s: [','.join(s[dataframe.columns[1]])])
dataframe.columns[1].apply(lambda s: s.split(','))

14、DataFrame去重

df.drop_duplicates()

15、更换列位置

df.loc[:, [columns1, columns0]]

image

16、针对某列进行排序

df.sort_values(by=columns)

image

17、填充NaN

"""
使用0填充NaN
"""
df.fillna(0)

image

18、将两列合并成新的一列

"""
sep指定分隔符,默认空
"""
df[new_columns] = df[columns0].map(str).str.cat(df[columns1].map(str), sep=',')
注:合并的两列不是str需转str

image

19、指定列函数操作

"""
apply提供了应用在行列的方法
"""
DataFrame.apply(self, func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds)[source]

df[columns] = df.columns[columns].apply(lambda s: s.split(','))

image


更新中



免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM