Pandas 第二节 数据结构-DataFrame

 理论:

DataFrame数据结构:

  • 类似多维数组/表格数据
  • 每列数据可以是不同的类型
  • 索引包括行索引(index)和列索引(label/column)

DataFrame的构建以及操作:

1.构建DataFrame

  • 通过ndarray/列表
  • 通过dict通

2.获取列数据(Series类型 )

df_obj[label] 或 df_obj.label

3.增加列数据

df_obj[new_label] = data

4.删除列

  • df_obj.drop(columns=[],inplace=False),当inplace=True时,原数据不会改变,否则不变。
  • del df_obj[col_idx]

 

 

实验:

第五课数据分析工具Pandas基础

第二节 数据结构-DataFrame

数据结构--DataFrame

In [1]:

 

 
import pandas as pd
import numpy as np

构建DataFrame

In [3]:

 

# 通过ndarray
array = np.random.randn(5,4)
print(array)
[[-0.12816457  0.27077416 -0.61990247  0.4035906 ]
 [-0.26341507  0.04203491  0.77618217  1.37930502]
 [ 1.48660347  0.2923378  -0.54919946 -0.30086526]
 [-0.53059414 -1.56234117 -0.33324783  0.41363335]
 [ 0.12839676 -0.96041499 -0.67103782 -1.01363347]]

In [4]:

 

 
df_obj = pd.DataFrame(array)
df_obj

Out[4]:

 0123
0-0.1281650.270774-0.6199020.403591
1-0.2634150.0420350.7761821.379305
21.4866030.292338-0.549199-0.300865
3-0.530594-1.562341-0.3332480.413633
40.128397-0.960415-0.671038-1.013633

In [5]:

 

 
print(df_obj)
          0         1         2         3
0 -0.128165  0.270774 -0.619902  0.403591
1 -0.263415  0.042035  0.776182  1.379305
2  1.486603  0.292338 -0.549199 -0.300865
3 -0.530594 -1.562341 -0.333248  0.413633
4  0.128397 -0.960415 -0.671038 -1.013633

In [6]:

 

# 通过dict
dict_data = {'A': 1.,
             'B': pd.Timestamp('20200318'),
             'C': pd.Series(1,index=list(range(4)),dtype='float32'),
             'D': np.array([3] * 4,dtype='int32'),
             'E': ['Python','Java','C++','C#'],
             'F': 'ChinaHadoop'}
print(dict_data)
{'A': 1.0, 'B': Timestamp('2020-03-18 00:00:00'), 'C': 0    1.0
1    1.0
2    1.0
3    1.0
dtype: float32, 'D': array([3, 3, 3, 3]), 'E': ['Python', 'Java', 'C++', 'C#'], 'F': 'ChinaHadoop'}

In [7]:

 

 
df_obj2 = pd.DataFrame(dict_data)
df_obj2

Out[7]:

 ABCDEF
01.02020-03-181.03PythonChinaHadoop
11.02020-03-181.03JavaChinaHadoop
21.02020-03-181.03C++ChinaHadoop
31.02020-03-181.03C#ChinaHadoop

获取行,列、值

In [9]:

 

 
df_obj2.columns

Out[9]:

Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')

In [10]:

 

 
df_obj2.index

Out[10]:

Int64Index([0, 1, 2, 3], dtype='int64')

In [11]:

 

 
df_obj2.values

Out[11]:

array([[1.0, Timestamp('2020-03-18 00:00:00'), 1.0, 3, 'Python',
        'ChinaHadoop'],
       [1.0, Timestamp('2020-03-18 00:00:00'), 1.0, 3, 'Java',
        'ChinaHadoop'],
       [1.0, Timestamp('2020-03-18 00:00:00'), 1.0, 3, 'C++',
        'ChinaHadoop'],
       [1.0, Timestamp('2020-03-18 00:00:00'), 1.0, 3, 'C#',
        'ChinaHadoop']], dtype=object)

预览数据

In [12]:

 

 
df_obj2.head(3)

Out[12]:

 ABCDEF
01.02020-03-181.03PythonChinaHadoop
11.02020-03-181.03JavaChinaHadoop
21.02020-03-181.03C++ChinaHadoop

In [13]:

 

 
df_obj2.tail(3)

Out[13]:

 ABCDEF
11.02020-03-181.03JavaChinaHadoop
21.02020-03-181.03C++ChinaHadoop
31.02020-03-181.03C#ChinaHadoop

In [14]:

 

df_obj2['E']

Out[14]:

0    Python
1      Java
2       C++
3        C#
Name: E, dtype: object

In [16]:

 

 
df_obj2.E

Out[16]:

0    Python
1      Java
2       C++
3        C#
Name: E, dtype: object

In [15]:

 

type(df_obj2['E'])

Out[15]:

pandas.core.series.Series

增加列数据

In [17]:

 

 
df_obj2['G'] = range(4)

In [18]:

 

 
df_obj2

Out[18]:

 ABCDEFG
01.02020-03-181.03PythonChinaHadoop0
11.02020-03-181.03JavaChinaHadoop1
21.02020-03-181.03C++ChinaHadoop2
31.02020-03-181.03C#ChinaHadoop3

删除列

In [21]:

 

 
df_obj3 = df_obj2.drop(columns=['B','G'])

In [22]:

 

 
df_obj3

Out[22]:

 ACDEF
01.01.03PythonChinaHadoop
11.01.03JavaChinaHadoop
21.01.03C++ChinaHadoop
31.01.03C#ChinaHadoop

In [23]:

 

 
df_obj2

Out[23]:

 ABCDEFG
01.02020-03-181.03PythonChinaHadoop0
11.02020-03-181.03JavaChinaHadoop1
21.02020-03-181.03C++ChinaHadoop2
31.02020-03-181.03C#ChinaHadoop3

In [ ]:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值