python基础-----Pandas的DataFrame和pandas.core.series.Series

两种数据类型的比较

参考:https://blog.csdn.net/LZH_12345/article/details/79798787
总结:两种数据的横向属性是index,而只有DataFrame的columns属性指的是纵向属性

Series的数据只是有index和index.name属性,没有columns属性,而DataFrame数据有columns属性

其中,series的数据更像是字典的数据,包含索引和数据;而另一种形式的数据则可以使用多个属性
通过下面程序的显示,比较两种数据的不同

import pandas as pd

def fenge(x):
    print("*******%s的分割符*******"%x)
data={'names':['Bob','Jane','Jack','Ann'],
       'sex':['M','F','M','F'],
       'age':[21,30,26,28]}
se = pd.Series(data)
#其中“names”,"sex"..是se的index值,可通过se.index=[]改变
af_se = pd.DataFrame(data)
fenge("Series类型的数据")
print(se)
'''
names    [Bob, Jane, Jack, Ann]
sex                [M, F, M, F]
age            [21, 30, 26, 28]
dtype: object
'''
fenge("DataFrame类型的数据")
print(af_se)
'''
  names sex  age
0   Bob   M   21
1  Jane   F   30
2  Jack   M   26
3   Ann   F   28
'''
#下一条命令,不能直接改变原有的af_se的columns数据,只能通过赋值到另一变量
af_se2=pd.DataFrame(af_se,index=[0,"b","2","4"]\
        ,columns=["names","se","tr","fo"])
fenge("对DataFrame的数据的索引和列名称修改")
print(af_se2)
'''
   names  se  tr  fo
0   Bob NaN NaN NaN
b   NaN NaN NaN NaN
2   NaN NaN NaN NaN
4   NaN NaN NaN NaN
'''

Series类型的数据

个人理解:就像是一维字典和列表的结合,默认index是和列表一样从0开始,但不同的是该数据类型的索引可以自己定义 ,例如,a.index=[索引1,索引2…]
对series的数据可以使用:变量名.index和变量名.values显示数据内容

import pandas as pd

def fenge(x):
    print("*******%s的分割符*******"%x)

a=[1,2,6,8,4]
fenge("列表a")
print(a)
#[1, 2, 6, 8, 4]
b=pd.Series(a)
fenge("series")
print (b)
'''
0    1
1    2
2    6
3    8
4    4
dtype: int64
'''
b.index=["zero","first","second","third","forth"]
fenge("修改index后")
print(b)
"""
zero      1
first     2
second    6
third     8
forth     4
dtype: int64
"""
fenge("打印b的values")
print(b.values)
#[1 2 6 8 4]
print(b.keys)
'''
<bound method Series.keys of zero      1
first     2
second    6
third     8
forth     4
dtype: int64>
'''

为series对象本身和index添加name

import pandas as pd

def fenge(x):
    print("*******%s的分割符*******"%x)

a=[1,2,'6',8,4]

b=pd.Series(a)
fenge("series")
print(b)
'''
0    1
1    2
2    6
3    8
4    4
dtype: object
'''
fenge("添加索引名字后")
b.name="mingzi"
b.index.name="suoyin"
print (b)
'''
suoyin
0    1
1    2
2    6
3    8
4    4
Name: mingzi, dtype: object
'''

DataFrame的数据类型

个人认识:相当于是相对与Series的多维,不只是一行的索引,可以有多个属性的索引,可从下面程序看出。但主义的是reindex(数据,index=[ ])函数不改变原来数据的内容,只是将参数的数据拷贝入函数后改变形式。注意的是若reindex()的index[]参数中出现没有在参数数据中,则新生成的数据内容默认为空。

使用的数据
2013/10/24 3 0
2013/10/25 4 1
2013/10/26 5 2
2013/10/27 5 3
2013/10/28 5 4
2013/10/29 5 5
import pandas as pd

def fenge(x):
    print("*******%s的分割符*******"%x)

df=pd.read_csv("test_data.csv",header=None)

fenge("原始的df数据的前两项")
print(df.head(4))
'''
            0  1  2
0  2013/10/24  3  0
1  2013/10/25  4  1
2  2013/10/26  5  2
3  2013/10/27  5  3
'''
df.columns=["A","B","C"]
fenge("添加列属性后")
print(df.head(4))
'''
            A  B  C
0  2013/10/24  3  0
1  2013/10/25  4  1
2  2013/10/26  5  2
3  2013/10/27  5  3
'''
fenge("添加index的值")
df.index=["a","b","c","d","e","f"]
print(df.head(4))
'''
            A  B  C
a  2013/10/24  3  0
b  2013/10/25  4  1
c  2013/10/26  5  2
d  2013/10/27  5  3
'''
#只能通过赋值得到改变后的值
af_df=df.reindex(index=["e","f","d","fo","fi","si"])
fenge("使用reindex并赋值后")
print(af_df.head(4))
'''
             A    B    C
e   2013/10/28  5.0  4.0
f   2013/10/29  5.0  5.0
d   2013/10/27  5.0  3.0
fo         NaN  NaN  NaN
'''
fenge("使用reindex的原数组")
print(df.head(4))
'''
            A  B  C
a  2013/10/24  3  0
b  2013/10/25  4  1
c  2013/10/26  5  2
d  2013/10/27  5  3
'''
发布了13 篇原创文章 · 获赞 0 · 访问量 138

猜你喜欢

转载自blog.csdn.net/weixin_43794311/article/details/104079354