pandas的数据类型简单介绍-Series与DataFrame
⽬录
Pandas 的主要数据结构是 Series (⼀维数据)与 DataFrame(⼆维数据),这两种数据结构⾜以处理我们⽬前绝⼤多数应⽤领域⾥的典型⽤例。
1. Series
1.1 Series 定义
Series 是⼀种类似于⼀维数组的对象,它由⼀组数据(各种Numpy数据类型)以及⼀组与之相关的数据标签(即索引)组成。
1.2 Series 构造
先说函数 pandas.Series( data, index, dtype, name, copy)
参数说明:
data:⼀组数据(ndarray 类型),元组、列表、字典、数组等都可以
index:数据索引标签,如果不指定,默认从 0 开始;如果指定的话,使⽤列表或者元组格式
进⾏指定,其中列表或者元组的长度需要和 data的数据⾏数⼀致。此处索引指的是
⾏索引。
dtype:数据类型,默认会⾃⼰判断。
name:设置名称。# 也可以不设置
copy:拷贝数据,默认为 False。
⼤家先看看例⼦
import numpy as np
import pandas as pd
a_dict={"a":"aa","b":"bb","c":"cc"}
b_list=list(range(10))
c_array=np.array(b_list)
print("*"*20+" Series from dict "+"*"*20)
a_serise=pd.Series(a_dict)
print(a_serise)
print(a_serise.index)
print(a_serise.dtype)
print(a_serise.dtypes)
print(a_serise.name)
print("*"*20+" Series from list "+"*"*20)
b_serise=pd.Series(b_list)
parameter数据类型print(b_serise)
print(b_serise.index)
print(b_serise.dtype)
print(b_serise.name)
print("*"*20+" Series from array "+"*"*20)
c_serise=pd.Series(c_array,index=["001","002","003","004","005","006","007","008","009","010"],name="from array") print(c_serise)
print(c_serise.index)
print(c_serise.dtype)
print(c_serise.dtypes)
print(c_serise.name)
print("*"*40)
运⾏结果是
******************** Series from dict ********************
a    aa
b    bb
c    cc
dtype: object
Index(['a', 'b', 'c'], dtype='object')
object
object
None
******************** Series from list ********************
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
dtype: int64
RangeIndex(start=0, stop=10, step=1)
int64
None
******************** Series from array ********************
001    0
002    1
003    2
004    3
005    4
006    5
007    6
008    7
009    8
010    9
Name: from array, dtype: int32
Index(['001', '002', '003', '004', '005', '006', '007', '008', '009', '010'], dtype='object')
int32
int32
from array
****************************************
2. DataFrame
2.1 DataFrame 定义
DataFrame 是⼀个表格型的数据结构,它含有⼀组有序的列,每列可以是不同的值类型(数值、字符
串、布尔型值)。DataFrame 既有⾏索引也有列索引,它可以被看做由 Series 组成的字典(共同⽤⼀个索引)。
2.2 DataFrame 构造
2.2.1 使⽤ pandas.DataFrame 函数
DataFrame 构造⽅法:pandas.DataFrame( data, index, columns, dtype, copy)
参数说明:
data:⼀组数据(ndarray、series, map, lists, dict 等类型)。
index:索引值,或者可以称为⾏标签。
columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
dtype:数据类型。
copy:拷贝数据,默认为 False。
1)对列表的转换和构造
先看看例⼦
data_list = [['Google',1],['Baidu',2],['Facebook',3]]
print("*"*20+" Dataframe from list"+"*"*20)
df1 = pd.DataFrame(data_list,dtype=float)
print(df1)
df1 = pd.DataFrame(data_list,index=["index1","index2","index3"],columns=['Company','Rank'],dtype=int) print("*"*5+" Dataframe from list ,converte with index and columns "+"*"*5)
print(df1)
******************** Dataframe from list ********************
0    1
0    Google  1.0
1    Baidu  2.0
2  Facebook  3.0
***** Dataframe from list ,converte with index and columns *****
Company  Rank
index1    Google    1
index2    Baidu    2
index3  Facebook    3
运⾏结果如下,可以看出:
1) 对列表转换时候,每个⼦ list 就是⼀⾏数据,数值数据类别由 dtype 决定,如果dtype没
有指定,则沿⽤默认的 int 类型。
2)index 如果没有指定,则默认为 0,;columns如果没有指定,也是默认为 0,
3)和 Numpy 模块不⼀样,这⾥的数据类型不需要完全统⼀。
4) 对列表转换时候,是没有 columns 的名字的,它只有数据,所以加上 columns 参数很有必要,但是对于列表内部是字典的结构来说,columns 参数可能会带来意想不到的结果。
data_list = [['Google',1,"def"],['Baidu',2,"DFG"],['Facebook',3,"fgf"]]
print("*"*20+" Dataframe from list"+"*"*20)
df1 = pd.DataFrame(data_list)
print(df1)
df1 = pd.DataFrame(data_list,index=["index1","index2","index3"],columns=['Company','Rank',"Comments"],dtype=float)
print("*"*20+" Dataframe from list ,converte with index and columns "+"*"*20)
print(df1)
运⾏结果
******************** Dataframe from list ********************
0  1    2
0    Google  1  def
1    Baidu
2  DFG
2  Facebook
3  fgf
******************** Dataframe from list ,converte with index and columns ********************
Company  Rank Comments
index1    Google  1.0      def
index2    Baidu  2.0      DFG
index3  Facebook  3.0      fgf
2)data ⼤结构是列表,⼩结构是字典的情况
这时候字典的 key 就是 column。在每个字典⾥⾯,每个Key-Value 对⾥⾯的Key,都是
column 名字。如果有些 Value 没有指定,会⽤默认 NaN。
如果pd.DataFrame⾥⾯指定了column,就会发现数据消失了(其实是数据都变成了
NaN,Oh My God,发⽣什么事情了?)
index 如果没有指定,则默认为 0,
这时候是⾯向⾏进⾏转换和构造的。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。