热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java类似dataframe_PandasDataFrame使用总结

Pandas是一个非常好用的库,总结一下PandasDataFrame常见用法,在使用的时候可以快速找到。PandasDataFrames是具有带标签的

Pandas 是一个非常好用的库,总结一下 Pandas DataFrame 常见用法,在使用的时候可以快速找到。

Pandas DataFrames 是具有带标签的行和列的二维数据结构,可以存储很多类型的数据。如果你熟悉 Excel 的话,可以将 Pandas DataFrames 看做类似于电子表格。

一、引入

import numpy as np

import pandas as pd

二、创建

data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

c = ['a', 'b', 'c']

r = ['A', 'B', 'C']

df = pd.DataFrame(data=data, columns=c, index=r)

三、排序

按列、行名排序

# 行名排序 降序

df.sort_index(axis=0, ascending=False)

# 列名排序 降序

df.sort_index(axis=0, ascending=False)

按值排序

拿出来排序

df["a"].sort_values(ascending = False)

df 内排序

df.sort_values( ['a', 'b', 'c'])

四、索引

位置索引

df.iloc[2] # 选择第二行所有数据, 是Series类型

df.iloc[[2]] # 选择第二行所有数据, 是DataFrame类型

df.iloc[:, 2] # 选择第二列所有数据, 是Series类型

df.iloc[:, [2]] # 选择第二列所有数据, 是DataFrame类型

df.iloc[:, 0:2] # 选择0到2列所有数据

df.iloc[[2,3], 0:2] # 选择2和3行, 0到2列所有数据

df.iat[1, 1] # 根据位置快速取出数据, 获取单个数据推荐这种方法

自定义索引

df.loc['top'] # 选择指定行数据, 是Series类型

df.loc[['top']] # 选择指定行数据, 是DataFrame类型

df.loc[:, 'xm'] # 选择指定列数据, 是Series类型(不推荐)

df.loc[:, ['xm']] # 选择指定列数据, 是DataFrame类型(不推荐)

df.loc[:, ['bj','xm']] # 选择多列数据(不推荐)

df.loc[:, 'bj':'xb'] # 选择多列之间所有数据, 列切片只能用这种方法

df.loc[['top','count'], 'bj':'xb'] # 选择指定行, 指定列数据

df.at['top', 'xm'] # 根据自定义索引快速取出数据, 获取单个数据推荐这种方法

布尔索引

# 选取所有出生日期大于等于1998年的数据, 这里是字符串比较

df[df['csrq']>='1998']

# 选取所有出生日期大于等于1997年小于1999年的数据

df[(df['csrq']>='1997')&(data['csrq']

# 选取所有出生日期大于等于1997年小于1999年的数据

df[df['csrq'].between('1997', '1999')]

# 选取所有出生日期大于等于1997年或者姓名为张三的数据

df[(df['csrq']>='1997')|(data['xm']=='张三')]

# 另一种选取方式(不推荐, 实测效率比上面低)

df[df.csrq>='1998']

# 选择字段值为指定内容的数据

df[df['xm'].isin(['张三','李四'])]

五、插入与删除

# 假设cj列本来不存在, 这样会在列尾添加新的一列cj, 值为s(Series对象), 原地

df['cj'] = s

# 在第1列位置插入一列dz(地址), 值为s, 原地

df.insert(0, 'dz', s)

# 在df中添加内容为df2(必须是DataFrame对象)的新列(添加列), 非原地

df.join(df2)

# 将df2中的行添加到df的尾部(添加行), 非原地

df.append(df2)

# 删除单列, 并返回删除的列, 原地

df.pop('xm')

# 删除指定行, 非原地

df.drop(1)

# 删除指定列, axis=1指第2维, axis默认0, 非原地

df.drop(['xm', 'xh'], axis=1)

六、DataFrame 重要方法与属性

'''重要属性'''

df.values # 查看所有元素的value

df.dtypes # 查看所有元素的类型

df.index # 查看所有行名

df.index = ['总数', '不同', '最多', '频率'] # 重命名行名

df.columns # 查看所有列名

df.columns = ['班级', '姓名', '性别', '出生日期'] # 重命名列名

df.T # 转置后的df, 非原地

'''查看数据'''

df.head(n) # 查看df前n条数据, 默认5条

df.tail(n) # 查看df后n条数据, 默认5条

df.shape() # 查看行数和列数

df.info() # 查看索引, 数据类型和内存信息

'''数据统计'''

df.describe() # 查看数据值列的汇总统计, 是DataFrame类型

df.count() # 返回每一列中的非空值的个数

df.sum() # 返回每一列的和, 无法计算返回空, 下同

df.sum(numeric_Only=True) # numeric_Only=True代表只计算数字型元素, 下同

df.max() # 返回每一列的最大值

df.min() # 返回每一列的最小值

df.argmax() # 返回最大值所在的自动索引位置

df.argmin() # 返回最小值所在的自动索引位置

df.idxmax() # 返回最大值所在的自定义索引位置

df.idxmin() # 返回最小值所在的自定义索引位置

df.mean() # 返回每一列的均值

df.median() # 返回每一列的中位数

df.var() # 返回每一列的方差

df.std() # 返回每一列的标准差

df.isnull() # 检查df中空值, NaN为True, 否则False, 返回一个布尔数组

df.notnull() # 检查df中空值, 非NaN为True, 否则False, 返回一个布尔数组

七、转换成 Numpy

df.values

np.array(df)

八、实战应用

获取交易对BTC/USDT最近10日的收盘标准差。

# 计算标准差

since_days = 10

test_symbol = 'BTC/USDT'

# 计算时间点

threeDayAgo = (datetime.datetime.now() - datetime.timedelta(days=since_days))

SinceTimeStamp = int(time.mktime(threeDayAgo.timetuple())) * 1000 # 转换为时间戳,*1000,转为毫秒时间戳13位

tickers_list = binance_exchange.fetch_ohlcv(test_symbol, timeframe='1d', since=SinceTimeStamp)

# print(len(tickers_list))

# print(tickers_list)

kline_data = pd.DataFrame(tickers_list)

kline_data.columns = ['Datetime', 'Open', 'High', 'Low', 'Close', 'Vol']

print(kline_data)

print("describe:\n", kline_data.describe())

std = kline_data['Close'].std()

print("标准差:", std)

打印:

Datetime Open High Low Close Vol

0 1590192000000 9170.00 9307.85 9070.00 9179.15 43526.296966

1 1590278400000 9179.01 9298.00 8700.00 8720.34 70379.866450

2 1590364800000 8718.14 8979.66 8642.72 8900.35 62833.910949

3 1590451200000 8900.35 9017.67 8700.00 8841.18 58299.770138

4 1590537600000 8841.00 9225.00 8811.73 9204.07 68910.355514

5 1590624000000 9204.07 9625.47 9110.00 9575.89 74110.787662

6 1590710400000 9575.87 9605.26 9330.00 9427.07 57374.362961

7 1590796800000 9426.60 9740.00 9331.23 9697.72 55665.272540

8 1590883200000 9697.72 9700.00 9381.41 9448.27 48333.786403

9 1590969600000 9448.27 9619.00 9421.67 9542.47 15797.593487

describe:

Datetime Open High Low Close \

count 1.000000e+01 10.000000 10.000000 10.000000 10.000000

mean 1.590581e+12 9216.103000 9411.791000 9049.876000 9253.651000

std 2.615890e+08 325.168891 282.355505 312.180668 339.899591

min 1.590192e+12 8718.140000 8979.660000 8642.720000 8720.340000

25% 1.590386e+12 8967.762500 9243.250000 8727.932500 8970.050000

50% 1.590581e+12 9191.540000 9456.555000 9090.000000 9315.570000

75% 1.590775e+12 9442.852500 9623.852500 9330.922500 9518.920000

max 1.590970e+12 9697.720000 9740.000000 9421.670000 9697.720000

Vol

count 10.000000

mean 55523.200307

std 16943.615232

min 15797.593487

25% 50166.657937

50% 57837.066549

75% 67391.244373

max 74110.787662

标准差: 339.8995912341039

相关文章:

Pandas DataFrame 总结

Python Pandas DataFrame 创建 (二十)

Python Pandas DataFrame 元素访问 (二十一)

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[Pandas DataFrame 使用总结]http://www.zyiz.net/tech/detail-138134.html



推荐阅读
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 如何优化Webpack打包后的代码分割
    本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。 ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • 原文链接:Python:获取“3年前的今天”的日期时间Python:getdatetimefor3yearsagotoday在Python中,如何获取3年前的今天的datetime ... [详细]
  • 获取时间的函数js代码,js获取时区代码
    本文目录一览:1、js获取服务器时间(动态)2 ... [详细]
  • 动量|收益率_基于MT策略的实战分析
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于MT策略的实战分析相关的知识,希望对你有一定的参考价值。基于MT策略的实战分析 ... [详细]
  • 生产环境下JVM调优参数的设置实例
     正文前先来一波福利推荐: 福利一:百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。福利二 ... [详细]
  • Spring Boot 中 Java8 LocalDateTime 序列化问题
    LoginController页面如下:publicObjectlogin(@RequestBodyUseruser){returnxxxx ... [详细]
author-avatar
风尚宣城_588
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有