
Pandas
文章平均质量分 55
Pandas
u013250861
这个作者很懒,什么都没留下…
展开
-
dataframe.describe()禁止使用科学计数法
所做的是,它只是将每一行格式化为常规格式。我写这个答案的原因是,我心里有。对于整个DataFrame(如@databyte所建议)想法,那就是在我们的常规格式中,它也更易于比较。原创 2023-01-27 23:07:21 · 791 阅读 · 0 评论 -
Pandas-DataFrame-常用函数:append() 方法【将一个 DataFrame 追加到另外一个 DataFrame 的末尾】【返回一个新的 DataFrame 对象,不会对原始 Da】
方法返回一个新的 DataFrame 对象,不会对原始 DataFrame 进行任何更改。方法在当前 DataFrame 的末尾追加同类 DataFrame 的对象。原创 2023-01-25 16:24:24 · 3482 阅读 · 1 评论 -
Pandas-常用函数:drop_duplicates()【去重函数】
参数说明如下:subset:表示要进去重的列名,默认为 None。keep:有三个可选参数,分别是 first、last、False,默认为 first,表示只保留第一次出现的重复项,删除其余重复项,last 表示只保留最后一次出现的重复项,False 则表示删除所有重复项。inplace:布尔值参数,默认为 False 表示删除重复项后返回一个副本,若为 Ture 则表示直接在原数据上删除重复项。原创 2023-01-20 09:45:39 · 800 阅读 · 0 评论 -
Pandas-打印处理(一):打印结果展示省略号的问题【pd.set_option(‘display.参数‘, 1000)】【参数:max_columns、width、max_colwidth】
一、打印结果有省略号import osimport pandas as pdimport tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import layers, optimizers, datasetsos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'# 读取数据集mnist_dataset = datasets.mnist.load_data()dataset_tr原创 2022-04-16 20:22:13 · 1034 阅读 · 0 评论 -
Pandas:简介【基于Numpy构建,为数据分析而存在】【一维:Series;二维:DataFrame】【兼容各种数据库】【支持各种分析算法】【可直接读取数据并做处理(高效简单)】
Pandas官方文档2008年WesMcKinney开发出的库专门用于数据挖掘的开源python库依赖Numpy为基础,借力Numpy模块在计算方面性能高的优势基于matplotlib,能够简便的画图独特的数据结构。原创 2022-04-05 15:28:22 · 501 阅读 · 0 评论 -
Pandas-数据结构-Series(一):创建Series【①由字典创建;②由一维数组创建;③由标量创建】【Series的属性:index、values、name】
Pandas中一共有三种数据结构,分别为:Series、DataFrame和MultiIndex(老版本中叫Panel )。其中:Series是一维数据结构;DataFrame是二维的表格型数据结构;MultiIndex是三维的数据结构;Series是一个类似于一维数组的数据结构,它能够保存任何类型的数据,比如整数、字符串、浮点数等,主要由一组数据和与之相关的索引两部分构成。创建pd.Series([], index=[])pd.Series({})属性对象.index对原创 2022-04-05 15:31:29 · 6478 阅读 · 0 评论 -
Pandas-数据结构-Series(二):Series的索引【下标索引、标签索引、切片索引、布尔型索引】
一、下标索引位置下标,类似序列位置下标从0开始输出结果为numpy.float格式,可以通过float()函数转换为python float格式numpy.float与float占用字节不同import numpy as npimport pandas as pds = pd.Series(np.random.rand(5))print('s = \n', s)print('\ns[0] = {0}, type(s[0]) = {1}, s[0].dtype = {2}'.form原创 2022-04-06 23:09:34 · 4399 阅读 · 0 评论 -
Pandas-数据结构-Series(三):常用操作【数据查看(head)、排序(sort_values)、重新索引(reindex)、对齐(计算时根据标签自动对齐)、添加元素、修改元素、删除元素】
一、数据查看.head()查看头部数据.tail()查看尾部数据默认查看5条import numpy as npimport pandas as pds = pd.Series(np.random.rand(50))print("s.head() = \n", s.head())print("-" * 100)print("s.head(10) = \n", s.head(10))print("-" * 100)print("s.tail() = \n", s.tail())原创 2022-04-06 23:37:17 · 2044 阅读 · 0 评论 -
Pandas-数据结构-DataFrame(一):创建DF【①由数组组成的字典;②由Series组成的字典;③通过二维数组直接创建;④由字典组成的列表;⑤由字典组成的字典】
# 导入pandasimport pandas as pdpd.DataFrame(data=None, index=None, columns=None)参数:index:行标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。index参数:重新定义index,格式为list,长度必须保持一致columns:列标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。columns参数:可以重新指定列的顺序,格式为list,如果现有数据中没有该列(比如’d’原创 2022-04-07 21:24:23 · 4642 阅读 · 0 评论 -
Pandas-数据结构-DataFrame(二):DF的属性【形状/shape、行索引/index、列索引/columns、查看值/values、转置/T、head.()、tail.()】
2.DataFrameDataFrame是一个类似于二维数组或表格(如excel)的对象,既有行索引,又有列索引行索引,表明不同行,横向索引,叫index,0轴,axis=0列索引,表名不同列,纵向索引,叫columns,1轴,axis=12.1 DataFrame的创建# 导入pandasimport pandas as pdpd.DataFrame(data=None, index=None, columns=None)参数:index:行标签。如果没有传入索引参数,则原创 2022-04-05 15:32:45 · 7521 阅读 · 0 评论 -
Pandas-数据结构-DataFrame(二):设置索引【①创建DataFrame时添加行、列索引;②修改行/列索引值;③重设新下标索引;④以某列值设置为新的索引】
创建学生成绩表# 生成10名同学,5门功课的数据score = np.random.randint(40, 100, (10, 5))# 结果array([[92, 55, 78, 50, 50], [71, 76, 50, 48, 96], [45, 84, 78, 51, 68], [81, 91, 56, 54, 76], [86, 66, 77, 67, 95], [46, 86, 56, 61, 99],原创 2022-04-07 22:36:44 · 12525 阅读 · 0 评论 -
Pandas-数据结构-DataFrame(三):列索引【df[‘列名‘]、df[[‘列名1‘,‘列名2‘]]、df.iloc[:, 2:6]】
1、df[‘col_name’]:按照“列名”索引提取列数据按照列名选择列,只选择一列输出Series,选择多列输出Dataframedf[]一般用于选择列,[]中写列名(所以一般数据colunms都会单独制定,不会用默认数字列名,以免和index冲突);单选列为Series,print结果为Series格式;多选列为Dataframe,print结果为Dataframe格式;import numpy as npimport pandas as pddf = pd.DataFrame(n原创 2022-04-09 18:47:55 · 2754 阅读 · 0 评论 -
Pandas-数据结构-DataFrame(四):行索引【df[1:3];单标签:loc/iloc[-1];多标签:loc/iloc[[3, 2]];多行索引:loc/iloc[1:3]】
只选择一行输出Series,选择多行输出Dataframe一、df[1:3]:按“位置下标”切片提取行数据按照行切片索引:df[row_index_start : row_index_end]df[]中为数字时,默认选择行,且只能进行切片的选择,不能单独选择(df[0]是错误的)输出结果为Dataframe,即便只选择一行df[]不能通过索引标签名来选择行(df['one'])df[]:利用 默认位置下标 来获取想要的行【末端不包含】import numpy as npimport pa原创 2022-04-09 18:57:49 · 2676 阅读 · 0 评论 -
Pandas-数据结构-DataFrame(五):行&列同时索引【①:df.loc[[‘b‘, ‘c‘], [‘y‘, 8]];②:先列索引,再行索引;③:df.iloc[1:3, 2:6]】
Dataframe既有行索引也有列索引,可以被看做由Series组成的字典(共用一个索引)。三、行列同时索引1、提取 “目标行 & 目标列”:df.loc[[‘b’, ‘c’], [‘y’, 8]]df = x y z 8 9a NaN NaN NaN NaN NaNb NaN NaN NaN NaN NaNc NaN NaN NaN NaN NaNd NaN NaN NaN NaN NaNe NaN NaN NaN NaN NaNdf.loc[:,原创 2022-04-08 00:02:40 · 2394 阅读 · 0 评论 -
Pandas-数据结构-DataFrame(六):布尔型索引【用于逻辑筛选】
一、不做索引则会对数据每个值进行判断import numpy as npimport pandas as pd# 布尔型索引# 和Series原理相同df = pd.DataFrame(np.random.rand(16).reshape(4, 4) * 100, index=['one', 'two', 'three', 'four'], columns=['a', 'b', 'c', 'd'])print("df =原创 2022-04-09 18:40:47 · 5649 阅读 · 0 评论 -
Pandas-数据结构-DataFrame(七):添加元素、修改元素、删除元素
一、添加元素新增列/行并赋值import numpy as npimport pandas as pddf = pd.DataFrame(np.random.rand(16).reshape(4, 4) * 100, columns=['a', 'b', 'c', 'd'])print("df = \n", df)print("-" * 100)# 新增列/行并赋值df['e'] = 10df.loc[4] = 20print("df = \n",原创 2022-04-13 23:08:09 · 7767 阅读 · 0 评论 -
Pandas-数据结构-DataFrame(八):对齐【运算时自动按照列和索引(行标签)】
import numpy as npimport pandas as pddf1 = pd.DataFrame(np.random.randn(10, 4), columns=['A', 'B', 'C', 'D'])df2 = pd.DataFrame(np.random.randn(7, 3), columns=['A', 'B', 'C'])print("df1 = \n", df1)print("-" * 50)print("df2 = \n", df2)print("-" * 10原创 2022-04-13 23:09:11 · 2313 阅读 · 0 评论 -
Pandas-数据结构-DataFrame(九):排序【按值排序:sort_values】【按索引排序:sort_index】
一、添加元素新增列/行并赋值import numpy as npimport pandas as pddf = pd.DataFrame(np.random.rand(16).reshape(4, 4) * 100, columns=['a', 'b', 'c', 'd'])print("df = \n", df)print("-" * 100)# 新增列/行并赋值df['e'] = 10df.loc[4] = 20print("df = \n",原创 2022-04-09 15:30:00 · 1579 阅读 · 0 评论 -
Pandas-数据结构-MultiIndex(老版本中叫Panel ):三维的数据结构【弃用】【推荐的用于表示3D数据的方法是通过DataFrame上的MultiIndex方法】
MultiIndex与PanelmultiIndex:类似ndarray中的三维数组创建:pd.MultiIndex.from_arrays()属性:对象.indexpanel:pd.Panel(data, items, major_axis, minor_axis)panel数据要是想看到,则需要进行索引到dataframe或者series才可以3.MultiIndex与Panel3.1 MultiIndexMultiIndex是三维的数据结构;多级索原创 2022-04-05 15:34:23 · 4025 阅读 · 0 评论 -
Pandas-数据操作-数值型(一):统计函数【describe、count、sum、mean、median、max、std、skew(偏度)、kurt(峰度)】【参数:axis、skipna】
一、统计函数Numpy当中已经详细介绍,在这里我们演示min(最小值), max(最大值), mean(平均值), median(中位数), var(方差), std(标准差),mode(众数)结果:统计函数描述countNumber of non-NA observationssumSum of valuesmeanMean of valuesmedianArithmetic median of valuesminMinimummaxMax原创 2022-04-10 21:45:33 · 3403 阅读 · 0 评论 -
Pandas-数据操作-数值型(二):累计统计函数【cumsum、cumprod、cummax、cummin】【计算前1/2/3/…/n个数的和、积、最大值、最小值】
一、累计统计函数函数作用cumsum计算前1/2/3/…/n个数的和cummax计算前1/2/3/…/n个数的最大值cummin计算前1/2/3/…/n个数的最小值cumprod计算前1/2/3/…/n个数的积二、累计统计函数怎么用?以上这些函数可以对series和dataframe操作这里我们按照时间的从前往后来进行累计排序# 排序之后,进行累计求和data = data.sort_index()对p_change进行求和stock_原创 2022-04-10 21:47:42 · 3327 阅读 · 0 评论 -
Pandas-数据操作-数值型(三):逻辑筛选【逻辑运算符号】【逻辑运算函数:query()、isin()】
2.1 逻辑运算符号例如筛选data[“open”] > 23的日期数据data[“open”] > 23返回逻辑结果data["open"] > 232018-02-27 True2018-02-26 False2018-02-23 False2018-02-22 False2018-02-14 False# 逻辑判断的结果可以作为筛选的依据data[data["open"] > 23].head()完成多个原创 2022-04-11 00:23:48 · 373 阅读 · 0 评论 -
Pandas-数据操作-字符串型(一):常用方法【str(自动过滤NaN值)、索引】
Pandas针对字符串配备的一套方法,使其易于对数组的每个元素进行操作。一、str:通过str访问,且自动排除丢失/ NA值原创 2022-04-10 21:58:37 · 752 阅读 · 0 评论 -
Pandas-数据操作-字符串型(二):常用方法【lower、upper、len、startswith、endswith、strip、lstrip、replace、split、rsplit】
一、字符串常用方法:lower,upper,len,startswith,endswithimport numpy as npimport pandas as pds = pd.Series(['A', 'b', 'bbhello', '123', np.nan])print("s = \n", s)print('-' * 200)print("lower小写: s.str.lower() = \n", s.str.lower())print('-' * 200)print("upper大原创 2022-04-11 23:02:46 · 851 阅读 · 0 评论 -
Pandas-数据操作-常用函数(一):unique(获取Series中的去重值)、value_counts(值计数、词频)、isin(成员资格)、duplicated(去重)、replace(替换)
一、unique():唯一值二、value_counts():值计数三、isin():成员资格原创 2022-04-10 21:54:15 · 14573 阅读 · 1 评论 -
Pandas-时间(一)-数据类型:Timestamp(“时间戳”类型)【创建:①pd.Timestamp()->Timestamp;②pd.to_datetime(单个数据)】
时刻数据代表时间点,是pandas的数据类型,是将值与时间点相关联的最基本类型的时间序列数据一、pd.Timestamp():用于单个时间戳from datetime import datetimeimport pandas as pddate1 = datetime(2016, 12, 1, 12, 45, 30) # 创建一个datetime.datetimedate2 = '2017-12-21' # 创建一个字符串data3 = '2017-12-21 15:00:22'# 直原创 2022-04-09 21:26:04 · 6021 阅读 · 0 评论 -
Pandas-时间(二)-数据类型:DatetimeIndex(其中每个元素的类型为:Timestamp)【创建方式:①pd.DatetimeIndex([]);②pd.to_datetime()】
一、pd.to_datetime():用于单个时间戳、时间序列pd.to_datetime():如果是单个时间数据,转换成pandas的时刻数据,数据类型为Timestamp多个时间数据,将会转换为pandas的DatetimeIndex数据类型1、单个时间戳pd.to_datetime():如果输入是单个时间数据,转换成pandas的时刻数据,数据类型为Timestampfrom datetime import datetimeimport pandas as pd# pd.to_d原创 2022-04-10 08:24:59 · 2914 阅读 · 0 评论 -
Pandas-时间(三):pd.date_range()【创建日期范围】【返回DatetimeIndex类型】【生成方式、normalize、closed、频率、复合频率、频率转换、位移】
pd.date_range()-日期范围:生成日期范围2种生成方式:①start + end; ②start/end + periods默认频率:dayimport pandas as pd# pd.date_range()-日期范围:生成日期范围# 2种生成方式:①start + end; ②start/end + periods# 默认频率:dayrng1 = pd.date_range(start='1/1/2017', end='1/10/2017', normalize=Tr原创 2022-04-10 09:06:48 · 14657 阅读 · 2 评论 -
Pandas-时期(一)-数据类型:Period(时期类型)【创建:pd.Period(value=‘2017‘, freq=‘M‘)->Period】【value:该period在时间轴上的位置】
import pandas as pd# pd.Period()创建时期# 生成一个以2017-01开始,月为频率的时间构造器# pd.Period()参数:一个时间戳 + freq 参数 → freq 用于指明该 period 的长度,时间戳则说明该 period 在时间轴上的位置p1 = pd.Period('2017', freq='M')print("p1 = {0}, type(p1) = {1}".format(p1, type(p1)))# 通过加减整数,将周期整体移动pr原创 2022-04-10 10:52:45 · 794 阅读 · 0 评论 -
Pandas-时期(二)-数据类型:PeriodIndex(其中每个元素的类型为:Period)【创建:①pd.PeriodIndex([], freq=‘‘);②pd.period_range()】
import numpy as npimport pandas as pd# pd.period_range()创建时期范围# 数据格式为PeriodIndex,单个数值为Periodprng = pd.period_range('1/1/2011', '1/1/2012', freq='M')print("prng = {0}, type(prng) = {1}".format(prng, type(prng)))print("-" * 50)print("prng[0] = {0},原创 2022-04-10 11:14:25 · 1385 阅读 · 0 评论 -
Pandas-时期(三):pd.period_range()【创建时期范围】【返回PeriodIndex类型】
import numpy as npimport pandas as pd# pd.period_range()创建时期范围# 数据格式为PeriodIndex,单个数值为Periodperiods = pd.period_range(start='1/1/2011', end='1/1/2012', freq='M')print("periods = {0}, type(periods) = {1}".format(periods, type(periods)))print("-" * 5原创 2022-04-10 11:59:26 · 840 阅读 · 0 评论 -
Pandas-时间序列(一)-数据类型:TimeSeries(时间序列)【以 DatatimeIndex/PeriodIndex 为 Index 的 Series】【“时间戳”与“时期”之间的转换】
以DatetimeIndex为index的Series,为TimeSries(时间序列)import numpy as npimport pandas as pd# pd.DatetimeIndex()# 直接生成时间戳索引,支持str、datetime.datetime# 单个时间戳为Timestamp,多个时间戳为DatetimeIndexrng = pd.DatetimeIndex(['12/1/2017', '12/2/2017', '12/3/2017'])print("rng =原创 2022-04-10 08:15:15 · 1760 阅读 · 0 评论 -
Pandas-时间序列(二)-索引及切片:TimeSeries是Series的一个子类,所以Series索引及数据选取方面的方法基本一样【TimeSeries通过时间序列有更便捷的方法做索引和切片】
一、索引import numpy as npimport pandas as pdfrom datetime import datetime# 索引rng = pd.date_range('2017/1', '2017/3')ts = pd.Series(np.random.rand(len(rng)), index=rng)print("ts = \n", ts)print("-" * 50)print("ts.head() = \n", ts.head())print("-" *原创 2022-04-10 19:57:27 · 1194 阅读 · 0 评论 -
Pandas-时间序列(三)-重采样:改变TimeSeries的采样频率【降采样:高频数据 → 低频数据(以天为频率转为以月为频率)】【升采样:低频数据 → 高频数据(以年为频率转为以月为频率)】
重采样:将时间序列从一个频率转换为另一个频率的过程,且会有数据的结合降采样:高频数据 → 低频数据,eg.以天为频率的数据转为以月为频率的数据升采样:低频数据 → 高频数据,eg.以年为频率的数据转为以月为频率的数据一、降采样1、OHLC采样(金融领域)OHLC:金融领域的时间序列聚合方式 → open开盘、high最大值、low最小值、close收盘import numpy as npimport pandas as pd# 重采样:.resample()# 创建一个以天为频率的T原创 2022-04-10 20:41:50 · 2898 阅读 · 0 评论 -
Pandas-高级处理(一):DataFrame多表联合【join:直接通过“索引”来连接2个DF】【merge:通过“自定义外键”来连接2个DF】【inner、left、right、outer】
Pandas具有全功能的,高性能内存中连接操作,与SQL等关系数据库非常相似一、merge合并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)可以指定按照两组数据的共同键值对合并或者左右各自left: Dat原创 2022-04-10 23:34:55 · 4250 阅读 · 1 评论 -
Pandas-高级处理(二):连接与修补【concat(参数:axis、join、keys)、combine_first(根据index,df1的空值被df2替代)】
一、连接(concat):沿轴执行连接操作pd.concat([data1, data2], axis=1):按照行或列进行连接操作:axis=0为列索引;axis=1为行索引;比如我们将刚才处理好的one-hot编码与原数据连接# 按照行索引进行pd.concat([data, dummies], axis=1)...原创 2022-04-10 23:38:21 · 459 阅读 · 0 评论 -
Pandas-高级处理(三):缺失值处理【isnull:判断是否有缺失数据NaN】【fillna:实现缺失值的填充】【dropna:实现缺失值的删除】【replace:实现数据的替换】
缺失值处理应用isnull判断是否有缺失数据NaN应用fillna实现缺失值的填充应用dropna实现缺失值的删除应用replace实现数据的替换1 如何处理nan获取缺失值的标记方式(NaN或者其他标记方式)如果缺失值的标记方式是NaN判断数据中是否包含NaN:pd.isnull(df),pd.notnull(df)存在缺失值nan:1、删除存在缺失值的:dropna(axis=‘rows’)注:不会修改原数据,需要接受返回值2、替换缺失值原创 2022-04-10 23:42:27 · 2329 阅读 · 0 评论 -
Pandas-高级处理(四):分组与聚合【分组:groupby、聚合统计:max/min/mean...、分组转换:transform、一般化Groupby方法:apply】【抛开聚合只谈分组没意义】
分组统计 - groupby功能① 根据某些条件将数据拆分成组② 对每个组独立应用函数③ 将结果合并到一个数据结构中应用groupby和聚合函数实现数据的分组与聚合分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况想一想其实刚才的交叉表与透视表也有分组的功能,所以算是分组的一种形式,只不过他们主要是计算次数或者计算比例!!看其中的效果:1 什么分组与聚合2 分组APIDataFrame.groupby(key, as_index=False)k原创 2022-04-10 23:51:44 · 979 阅读 · 0 评论 -
Pandas-高级处理(五):一般性“拆分-应用-合并”【一般化Groupby方法:apply】
一、transform# 数据分组转换,transformdf = pd.DataFrame({'data1':np.random.rand(5), 'data2':np.random.rand(5), 'key1':list('aabba'), 'key2':['one','two','one','two','one']})k_mean = df.groupby('key1').mean()原创 2022-04-12 22:59:44 · 1121 阅读 · 0 评论 -
Pandas-高级处理(六):map()【将自定义函数作用于Series的每个元素】、apply()【将自定义函数作用于DF的行或者列】、applymap()函数【将自定义函数作用于DF的所有元素】
1、mapmap()是Series对象的一个函数,DataFrame中没有map(),map()的功能是将一个自定义函数作用于Series对象的每个元素。现在使用map()函数来将data1这一列的数据改为保留三位小数显示df['data1'] = df['data1'].map(lambda x : "%.3f"%x)2、applyapply()函数的功能是将一个自定义函数作用于DataFrame的行或者列eg:现在使用apply()对data1和data2相加运行结果:df.l原创 2022-04-11 00:00:12 · 1697 阅读 · 0 评论