pandas_02 数据结构

数据结构

维数名称描述
1Series带标签的一维同构数组
2DataFrame带标签的,大小可变的,二维异构表格

处理 DataFrame 等表格数据时,index(行)或 columns(列)比 axis 0axis 1 更直观。用这种方式迭代 DataFrame 的列,代码更易读易懂:

import pands as pd
import numpy as np
for col in df.columns:
    series = df[col]
    # do something with series

0:series 生成对象:

Series是值的序列,可以理解为一维数组,它只有一个列和索引。索引可以定制,当不指定时默认使用整数索引,而且索引可以被命名

1.0 Pandas 默认自动生成整数索引
a = pd.Series([1,2,3,4],index = ['a','b','c','d'])

结果:

a    1
b    2
c    3
d    4
1.2 选择

对于Series数据,我们主要通过索引来进行选择。

选择方式

1一种是以整数索引(这说明整数索引一直默认存在) a[0]
2第二种方式是通过指定的字符索引进行 a[‘a’]

result

a[0]=1,  a['a']=1
_____________________
a [1:3]                      a['b':'d']
===+++result+++====> 
b    2
c    3
dtype: int64
# dtype :数据类型

对于Series数据,我们只要直接使用索引来获取部分元素即可。

1Dateframe介绍

1.1创建Dateframe数据

dateframe 类似二维数组,有行和列之分,除了像series一样,多个行有索引而外,每个列上面还可以有标签label,索引和标签本身是可以重命名的: 如果不指定的话,默认就是整数索引和标签。

b = pd.DaraFrame(np.random.random((5,4))) # 5:行名, 4:列名 
b = pd.DaraFrame(np.random.random((5,4)),index = ['a','b','c','d','f'],columns = ['A','B','C','D') # index = 行数  colums = 列数
==============指定行名和列名==============================
       A         B         C         D
a  0.095161  0.982524  0.253735  0.105706
b  0.795408  0.727552  0.183551  0.565994
c  0.968957  0.283453  0.630097  0.308991
d  0.310784  0.677971  0.417679  0.793429
e  0.042881  0.817054  0.508455  0.914367
1.2 创建Fateframe数据 二维数据

有的时候我们会首先创建一列, 之后使用往里面增加列的方式进行添加,这样做的好处是不用处理列与列数据之间的形状

方法:

pd.array(orbject)
pd.DataFrame(data,columns=列名)
x_test = pd.array([1,2,3]) 
y_test = pd.array([2,3,4])
pdd = pd.DataFrame(x_test,['x'])
pdd = pd.Dataframe(y_test,['y'])
================result================
   x  y
0  1  2
1  2  3
2  3  4
1.3 dataframe重命名-rename

在我们完成dataframe创建之后, 我们可能会需要修改行或者列的名称, 我们可以使用rename来进行名称的修改. 我们看一下下面的这个例子.

例子:

demo = pd.DataFrame([[1,2,3],[4,5,6]])
====================result=============
   0  1  2
0  1  2  3
1  4  5  6

修改列名 == columns 我们这里使用了inplace=True的设置, 直接替换原始的变量.

demo.rename(columns={0:'A',1:'B',2:'C'},inplace=True)

修改行名:

demo.rename(index = {0:'A',1:'B'}, inplace=True)

一起改

demo.rename(index={0:'A',1:'B'},columns={0:'A',1:'B',2:'C'},inplace=True)
1.4 直接对原始变量修改-inplace
 demo.dropna(subset=['C'],axis='index')
1.5 dataframe删除行或列-drop
test = pd.DataFrame([[1,2,3],[4,5,6]], index=['A','B'], columns=['C1','C2','C3'])
1.5.1 删除行 和 列
test.drop(['A'],axis=0) 删除行 axis = 0
+++++++++++result+++++++++++++++++
   A  B  C
B  4  5  6
test.drop(['C1','C2'],axis = 1) 删除列  axis = 1
+++++++++++result+++++++++++++++++
   C
A  3
B  6
1.6 选择dataframe元素

由于DataFrmae有行列之分,于是我们如果只使用df['A']会无法判断是行还是列,于是就要与之前讲到的loc了。

df = pd.DataFrame(np.random.random((5,4)),index=['a','b','c','d','e'],columns=['A','B','C','D'])

===================result======================
a    0.185856
b    0.312915
c    0.776103
d    0.197095
e    0.450428
Name: A, dtype: float64
1.6.1指定一列数据 [‘A’] 列名
df['A'] 
a    0.185856
b    0.312915
c    0.776103
d    0.197095
e    0.450428
Name: A, dtype: float64
1.6.2指定多列数据 columns 列名
df[df.columns[0:3]]
=========result==============
       A         B         C
a  0.185856  0.836637  0.298757
b  0.312915  0.048040  0.044261
c  0.776103  0.560147  0.985710
d  0.197095  0.555762  0.440846
e  0.450428  0.080262  0.122343
1.6.3查看所有列名
df.columns
=============result========================
Index(['A', 'B', 'C', 'D'], dtype='object')
1.6.4 选择单行或者多行数据 loc
df.loc['a'] #显示的一行数据
============result==========
A    0.185856
B    0.836637
C    0.298757
D    0.847832
Name: a, dtype: float64

df.loc['a':'c']  # 显示的多行数据
=============result=============
      A         B         C         D
a  0.185856  0.836637  0.298757  0.847832
b  0.312915  0.048040  0.044261  0.201718
c  0.776103  0.560147  0.985710  0.483510

选定具体的某行某列的数据,并且如何选中部分数据

df.loc['a','A'] #具体的某个数据
===========result===========
0.1858555589534865

df.loc['a':'c','A':'C'] # 那几行,哪几列
===========result============
      A          B         C
a  0.185856  0.836637  0.298757
b  0.312915  0.048040  0.044261
c  0.776103  0.560147  0.985710
1.6 用含日期时间索引与标签的 NumPy 数组生成 dataframe
dates = pd.date_range('20130101', periods=6)

结果

DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04','2013-01-05', '2013-01-06'], dtype='datetime64[ns]', freq='D')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值