python3pandas教程_[python][科学计算][pandas]简要使用教程(汇总)

最后一次更新日期: 2019/4/20

pandas是基于numpy的数据分析库,提供一些更易用的数据模型和大量高效的统计方法。

使用前先导入模块:

import pandas as pd

按需导入以下模块:

import numpy as np

import matplotlib.pyplot as plt

一. 数据模型与属性

1. 索引Index

numpy中只有位置索引,而pandas还增加了标签索引,依赖于一个专用的Index类型。

常规索引

In [64]: pd.Index([1,2,3])

Out[64]: Int64Index([1, 2, 3], dtype='int64')

In [65]: pd.Index([1.,2.,3.])

Out[65]: Float64Index([1.0, 2.0, 3.0], dtype='float64')

In [66]: pd.Index(['a','b','c'])

Out[66]: Index(['a', 'b', 'c'], dtype='object')

In [67]: pd.Index(range(10))

Out[67]: RangeIndex(start=0, stop=10, step=1)

In [68]: pd.Index(range(10)).values

Out[68]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=int64)

In [80]: import datetime as dt

...: dt1=dt.datetime.now()

...: dt2=dt1+dt.timedelta(days=1)

In [81]: pd.Index([dt1,dt2])

Out[81]: DatetimeIndex(['2019-03-09 20:56:14.644159', '2019-03-10 20:56:14.644159'], dtype='datetime64[ns]', freq=None)

Index在创建时会根据传入数据(一维序列)自动生成具体的索引类型,也可通过dtype参数指定类型,但无法正常转换时会报错;copy参数指定创建索引时是否复制源数据,默认false。

具体的索引类型也可通过各自的方法创建。

Index.values可以查看作为数据基础的一维数组,Index.dtype可以查看数据类型。

多级索引

pandas提供了多级索引以便于分组数据,可用于构造高维数据集,groupby计算也会自动产生多级索引。

In [5]: midx=pd.MultiIndex(levels=[['a','b'],['c','d']],labels=[[1,1,0,0],[0,1,0,1]],name=['idx1','idx2'])

In [6]: midx

Out[6]:

MultiIndex(levels=[['a', 'b'], ['c', 'd']],

labels=[[1, 1, 0, 0], [0, 1, 0, 1]],

names=['idx1', 'idx2'])

In [9]: midx.set_labels([1,0,1,0],level=1)

Out[9]:

MultiIndex(levels=[['a', 'b'], ['c', 'd']],

labels=[[1, 1, 0, 0], [1, 0, 1, 0]],

names=['idx1', 'idx2'])

In [11]: midx.swaplevel(0,1)

Out[11]:

MultiIndex(levels=[['c', 'd'], ['a', 'b']],

labels=[[0, 1, 0, 1], [1, 1, 0, 0]],

names=['idx2', 'idx1'])

In [12]: pd.MultiIndex.from_arrays([['a','a','b','b'],['c','d','c','d']],names=['idx1','idx2'])

Out[12]:

MultiIndex(levels=[['a', 'b'], ['c', 'd']],

labels=[[0, 0, 1, 1], [0, 1, 0, 1]],

names=['idx1', 'idx2'])

MultiIndex的第一个参数levels是每个级别的唯一标签列表,是一个两层嵌套的序列,外层对应级别,内层对应唯一标签;

第二个参数labels是所有记录在每个级别上选取的标签序号,也是一个两层嵌套的序列,外层对应级别,内层对应记录,新版本中已被codes参数取代;

第四个参数names是每个级别的名称。

MultiIndex提供了一些辅助方法,set_levels、set_labels、set_names可以设置整体或是某一级别的索引属性,通过level参数指定级别,默认设置整体;

swaplevel可以交换级别,droplevel可以删除级别,sortlevel可以对指定级别排序;

from_array、from_tuples、from_product、from_frame方法可从其他结构的数据中创建索引。

2. 数据序列Series

In [99]: s=pd.Series([1,2,3,4],name='s1')

In [100]: s

Out[100]:

0 1

1 2

2 3

3 4

Name: s1, dtype: int64

In [101]: pd.Series([[1,2],[3,4]],index=['row1','row2'])

Out[101]:

row1 [1, 2]

row2 [3, 4]

dtype: object

In [102]: s.dtype

Out[102]: dtype('int64')

In [103]: s.name

Out[103]: 's1'

In [104]: s.values

Out[104]: array([1, 2, 3, 4], dtype=int64)

In [105]: s.index

Out[105]: RangeIndex(start=0, stop=4, step=1)

In [106]: s.shape

Out[106]: (4,)

核心数据模型其一,由序列名name、标签索引index、值数组(一维)values组成。用于存放一维数据,只有一个轴方向:0,shape属性可以查看数据集的形状。

创建时只能接收一维序列数据(list,tuple,ndarray),超过一维的将后面的维度看作元素的维度,会根据传入的数据自动判断类型,也可通过dtype参数显示指定。

默认情况下会生成范围索引,可通过index参数指定一个一维序列作为索引,也可在创建后直接为index属性赋值。

3. 数据框DataFrame

In [107]: df=pd.DataFrame([[1,'a'],[2,'b']],columns=['col1','col2'])

In [108]: df

Out[108]:

col1 col2

0 1 a

1 2 b

In [113]: df.dtypes

Out[113]:

col1 int64

col2 object

dtype: object

In [114]: df.index

Out[114]: Int64Index([1, 2], dtype='int64', name='col1')

In [116]: df.columns

Out[116]: Index(['col1', 'col2'], dtype='object')

In [117]: df.values

Out[117]:

array([[1, 'a'],

[2, 'b']], dtype=object)

In [125]: df.col2

Out[125]:

col1

1 a

2 b

Name: col2, dtype: object

In [126]: pd.DataFrame({'col1':[1,3],'col2':['a','b']})

Out[126]:

col1 col2

0 1 a

1 3 b

In [127]: df.shape

Out[127]: (2, 2)

核心数据模型其二,也就是数据表,由列标签索引columns、行标签索引index、值数组(二维)values组成。用于存放二维数据,有两个轴方向:0和1,对应行坐标和列坐标,shape属性可以查看数据集的形状。列数据的访问可以通过与列名相同的属性名访问,仅在定义了字符串列名时可用,一个单列即是一个Series。

创建时只能接收二维序列数据(list,tuple,ndarray),超过二维的将后面的维度看作元素的维度,会根据传入的数据自动判断类型,也可通过dtype参数显示指定,与numpy不太一样的是,DataFrame的列可以定义不同的数据类型,通过创建时的自动判断,或是筛选出列后转换类型,DataFrame.dtypes属性可查看所有列的数据类型。相比numpy,pandas的DataFrame创建还增加了对dict数据源的支持,key对应列名,value对应列数据。

默认情况下会生成范围索引,可通过index参数指定一个一维序列作为索引,也可在创建后直接为index属性赋值,DataFrame.set_index方法可以返回替换了索引的数据框副本而不影响原数据。

DataFrame相当于Series的堆叠,沿DataFrame的行或列方向进行宽度为1的切片,得到的就是一个Series。

原本pandas还提供了三维的数据模型Panel,但新版中已经废弃,可尝试使用多级索引MultiIndex来构造更高维度的数据集。

4. 分类数据Categorical

pandas提供了分类数据类型用于约束此类数据,该类型会限制分类标签的取值,并可为分类标签提供排序依据。

In[14]: pd.Categorical(['a','b','b','c'],categories=['a','b'],ordered=True)

Out[14]:

[a, b, b, NaN]

Categories (2, object): [a < b]

In[15]: pd.Categorical(['a','b','b','c'])

Out[15]:

[a, b, b, c]

Categories (3, object): [a, b, c]

第一个参数values为所有分类标签的序列;

第二个参数categories为唯一分类标签的序列,当指定该参数后,values中不属于categories的标签会被替换为NaN,不指定时会根据values自动生成;

第三个参数ordered声明唯一分类标签是否指示排序方式,为True时会按categories中的顺序对标签标定大小关系,默认False。

二. 数据类型与转换

1. 数据类型

pandas支持的数据类型就是numpy的数据类型,在创建数据模型时同样可通过dtype参数指定。

常用的数据类型有:np.bool_(bool),np.int64(int),np.float64(float),np.datetime64(datetime),object(str等),pd.Categorical(category)。

更详细的类型说明可查看numpy的使用指南。

和numpy不太一样的是,numpy中int类型默认为np.int32,而pandas中默认np.int64;numpy中存储字符串优先采用定长的np.str_,而pandas中统一使用object。

pandas数据模型使用单个ndarray作为基础数据,所以当pandas的每列采用不同数据类型时,作为数据来源的ndarray整体被设置为object数据类型。

2. 类型转换

In [48]: df=pd.DataFrame([[1,'2'],[3,'a']],columns=['col1','col2'])

In [49

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pandas是一个强大的Python数据分析库,它提供了丰富的数据结构和数据处理工具,使得数据分析和数据处理变得更加简单和高效。下面是一些关于Pandas库的常用函数和用法: 1. pd.get_dummies()函数用于将分类变量转换成哑变量(dummy variables),也称为指示变量(indicator variables)。它可以将一个DataFrame中的某一列或多列进行独热编码,生成新的列来表示每个类别的存在与否。例如,可以使用以下语法将一个DataFrame中的分类变量转换成哑变量: dummies = pd.get_dummies(data, columns=None, prefix=None, prefix_sep='_', drop_first=False) \[1\] 2. pd.read_csv()函数用于读取CSV文件并将其转换为DataFrame对象。它可以指定文件路径、文件头、分隔符和编码等参数来读取CSV文件。例如,可以使用以下语法读取一个名为filename.csv的CSV文件: df = pd.read_csv('filename.csv', header=0, delimiter=',', encoding='utf-8') \[2\] 3. DataFrame.sample()函数用于从一个DataFrame对象中随机抽样一部分数据。它可以指定抽样的数量、抽样的比例、是否替换和抽样的权重等参数。例如,可以使用以下语法从一个DataFrame对象中随机抽样10个样本: sampled_data = df.sample(n=10) \[3\] 以上是Pandas库中一些常用函数的简要介绍,希望对你的学习有所帮助。如果你需要更详细的教程,可以参考Pandas官方文档或其他在线教程。 #### 引用[.reference_title] - *1* *2* *3* [Python Pandas库 最快入门教程(最简单最详细)](https://blog.csdn.net/hanmo22357/article/details/127278787)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值