经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python3 » 查看文章
Pandas数据分析常用函数的使用
来源:jb51  时间:2023/1/18 8:42:03  对本文有异议

Pandas是数据处理和分析过程中常用的Python包,提供了大量能使我们快速便捷地处理数据的函数和方法,在此主要整理数据分析过程pandas包常用函数,以便查询。更多函数学习详见padans官网

一、数据导入导出

pandas提供了一些用于将表格型数据读取为DataFrame对象函数,如read_csv,read_table。输入pd.read后,按Tab键,系统将把以read开头的函数和模块都列出来,根据需要读取的文件类型选取。

  1. #包的安装导入
  2. import pandas as pd
  3.  
  4. #查询帮助文档
  5. pd.read_csv?
  6.  
  7. #数据载入(仅罗列一部分常用参数)
  8. df = pd.read_csv(
  9. ? ? ?filePath, #路径?
  10. ? ? ?sep=',', ?#分隔符
  11. ? ? ?encoding='UTF-8', #用于unicode的文本编码格式,如GBK,UTF-8
  12. ? ? ?engine='python',
  13. ? ? ?header = None, #第一行不作为列名
  14. ? ? ?names= [['col1','col2']], #字段名设置
  15. ? ? ?index_col=None,?
  16. ? ? ?skiprows=None, #跳过行None
  17. ? ? ?error_bad_lines=False #错误行忽略 ? ?
  18. )
  19. # 数据导出
  20. df.to_csv(filePath,
  21. ? ? ? ? ? ?sep = ',',
  22. ? ? ? ? ? ?index = False)

二、数据加工处理

1)重复值处理

  1. # Pandas提供了duplicated、Index.duplicated、drop_duplicates函数来标记及删除重复记录
  2.  
  3. #找出重复行位置
  4. dIndex = df.duplicated()
  5. #根据某些列找出重复位置
  6. dIndex = df.duplicated('id')
  7. dIndex = df.duplicated(['id', 'key'])
  8. #根据返回值提取重复数据
  9. df[dIndex]
  10. #删除重复行
  11. newdf = df.drop_duplicated()
  12. #去掉重复数据
  13. newdf = df.drop_duplicated(keep = False)
  14. #根据'key'字段去重,并保留重复key字段第一个
  15. ##subset:指定的标签或标签序列,仅删除这些列重复值,默认情况为所有列
  16. ##keep:确定要保留的重复值:first(保留第一次出现的重复值,默认)last(保留最后一次出现的重复值)False(删除所有重复值)
  17. newdf = df.drop_duplicated(subset = ['key'],keep = 'first')

2)缺失值处理

  1. # 输出某列是否有为空值
  2. print(df.isnull().any(axis = 0))
  3. # 获取空值所在的行
  4. df[df.isnull().any(axis = 1)]
  5. # 空值填充
  6. df.fillna('未知')
  7. # 删除空值
  8. newDF = dropna(axis="columns",how="all",inplace=False) #how可选有any和all,any表示只要有空值出现就删除,all表示全部为空值才删除,inplace表示是否替换掉原本数据

3)空格处理

  1. newName = df['name'].str.lstrip()
  2. newName = df['name'].str.rstrip()
  3. newName = df['name'].str.strip()

4)字段拆分

  1. newDF = df['name'].str.split(' ', 1, True)

5)筛选数据

  1. #单条件
  2. df[df.comments>10000]
  3. #多条件
  4. df[df.comments.between(1000, 10000)]
  5. #过滤空值所在行
  6. df[pandas.isnull(df.title)]
  7. #根据关键字过滤
  8. df[df.title.str.contains('台电', na=False)]
  9. #~为取反
  10. df[~df.title.str.contains('台电', na=False)]
  11. #组合逻辑条件
  12. df[(df.comments>=1000) & (df.comments<=10000)]

6)随机抽样

  1. #设置随机种子
  2. numpy.random.seed(seed=2)
  3. #按照个数抽样
  4. data.sample(n=10)
  5. #按照百分比抽样
  6. data.sample(frac=0.02)
  7. #是否可放回抽样,
  8. #replace=True,可放回,
  9. #replace=False,不可放回
  10. data.sample(n=10, replace=True)

7)数据匹配

  1. items = pandas.read_csv(
  2. 'D:\\PDA\\4.12\\data1.csv',
  3. sep='|',
  4. names=['id', 'comments', 'title']
  5. )
  6. prices = pandas.read_csv(
  7. 'D:\\PDA\\4.12\\data2.csv',
  8. sep='|',
  9. names=['id', 'oldPrice', 'nowPrice']
  10. )
  11. #默认只是保留连接上的部分
  12. itemPrices = pd.merge(
  13. items,
  14. prices,
  15. left_on='id',
  16. right_on='id',
  17. how = 'left'
  18. )
  19. #how:连接方式,有inner、left、right、outer,默认为inner;

8)数据合并

  1. data = pd.concat([data1, data2, data3])

9)时间处理

  1. data['时间'] = pandas.to_datetime(
  2. data.注册时间,
  3. format='%Y/%m/%d'
  4. )
  5. data['格式化时间'] = data.时间.dt.strftime('%Y-%m-%d')
  6. data['时间.年'] = data['时间'].dt.year
  7. data['时间.月'] = data['时间'].dt.month
  8. data['时间.周'] = data['时间'].dt.weekday
  9. data['时间.日'] = data['时间'].dt.day
  10. data['时间.时'] = data['时间'].dt.hour
  11. data['时间.分'] = data['时间'].dt.minute
  12. data['时间.秒'] = data['时间'].dt.second

10)数据标准化

  1. data['scale'] = round(
  2. (
  3. data.score-data.score.min()
  4. )/(
  5. data.score.max()-data.score.min()
  6. )
  7. , 2
  8. )

11)修改列名和索引

  1. #将id列设为索引
  2. df = df.set_index('id')

12)排序

  1. #选定列排序
  2. df.sort_values(by=['age', 'gender'], ascending=[False, True], inplace=True, ignore_index=True)

三、列表格式设置

  1. pd.set_option('display.max_rows',xxx) # 最大行数
  2. pd.set_option('display.min_rows',xxx) # 最小显示行数
  3. pd.set_option('display.max_columns',xxx) # 最大显示列数
  4. pd.set_option ('display.max_colwidth',xxx) #最大列字符数
  5. pd.set_option( 'display.precision',2) # 浮点型精度
  6. pd.set_option('display.float_format','{:,}'.format) #逗号分隔数字
  7. pd.set_option('display.float_format', ?'{:,.2f}'.format) #设置浮点精度
  8. pd.set_option('display.float_format', '{:.2f}%'.format) #百分号格式化
  9. pd.set_option('plotting.backend', 'altair') # 更改后端绘图方式
  10. pd.set_option('display.max_info_columns', 200) # info输出最大列数
  11. pd.set_option('display.max_info_rows', 5) # info计数null时的阈值
  12. pd.describe_option() #展示所有设置和描述
  13. pd.reset_option('all') #重置所有设置选项

到此这篇关于Pandas数据分析常用函数的使用的文章就介绍到这了,更多相关Pandas数据分析常用函数内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号