DataFrame对象(创建,读取,添加,删除,方法)

创建DataFrame对象

语法:

pandas.DataFrame( data, index, columns, dtype, copy)
data 支持多种数据类型,如:ndarray,series,map,lists,dict,constant和另一个DataFrame。
index 行标签,如果没有传递索引值,默认值为0,1,2,3,4…….

columns 列标签,如果没有传递索引值,默认值为0,1,2,3,4…….

dtype 每列的数据类型
copy 是否复制数据,默认值为False

import pandas  as pd
df = pd.DataFrame()
print (df)

利用单层list

import pandas  as pd
x = [1,2,3,4,5,6]
df = pd.DataFrame(x,dtype=np.float32)
print(df)

利用双层list

import pandas  as pd
x = [
    ["tom",10],
    ["jack",20],
    ["mike",30]
]
#df = pd.DataFrame(x,columns=['name','age'])
#如果是True,那么x数据不改变
df = pd.DataFrame(x,columns=['name','age','sex'],copy=True)
df['age'] = 100
print(df)
print(x)

利用数据是字典的列表创建

import pandas  as pd
x = [
    {'a':1,'b':2},
    {'a':10,'b':20,'c':30}
]
#index 行索引  columns列索引
df1 = pd.DataFrame(x)
print(df1)
df1 = pd.DataFrame(x,index=["first","second"])
print(df1)
#如果没有c,就会默认是nun
df1 = pd.DataFrame(x,index=["first","second"],columns=['a','c'])
print(df1)
import pandas  as pd

#利用字典创建DataFrame
#a、b是列索引,一定要设置行索引(index),否则报错
x = {'a':1,'b':2}
d1 = pd.DataFrame(x,index=['row1'])
print(d1)
'''
      a  b
row1  1  2'''

字典里面的v是列表类型创建DataFrame
#那么默认列索引是name和age
x = {
    'name':['zs','ls','ww','zl'],
    'age':[14,15,16,17]
}
d1 = pd.DataFrame(x)
print(d1)
'''
  name  age
0   zs   14
1   ls   15
2   ww   16
3   zl   17'''
print(d1['age'])
'''
0    14
1    15
2    16
3    17
Name: age, dtype: int64'''
import pandas  as pd

s1=pd.Series(["馒头","包子","豆浆","老碗面"])
s2=pd.Series([1,1.5,2,10])
a={
    "食品":s1,
    "价格":s2
}
df1=pd.DataFrame(a)
print(df1)
'''
    食品    价格
0   馒头   1.0
1   包子   1.5
2   豆浆   2.0
3  老碗面  10.0 '''

列的读取

、语法
df[columns_lable]查询单列
df[columns_lable]查询多列
查询一列会进行降维DataFrame——–>Series
查询多列不变

import pandas  as pd
s1=pd.Series(["馒头","包子","豆浆","老碗面"])
s2=pd.Series([1,1.5,2,10])
a={
    "食品":s1,
    "价格":s2
}
df1=pd.DataFrame(a)
s=df1['食品']
print(s)
'''
0     馒头
1     包子
2     豆浆
3    老碗面
Name: 食品, dtype: object'''
print(type(s))#    查询一列会进行降维DataFrame-------->Series
s2=df1[['食品','价格']]
print(s2)
'''
    食品    价格
0   馒头   1.0
1   包子   1.5
2   豆浆   2.0
3  老碗面  10.0'''
print(type(s2))#   查询多列不变

列的添加

语法:df[columns]=数据
切记是同类型数据
df1[columns]=df1[columns]+df1[columns]

import pandas  as pd
s1=pd.Series(["馒头","包子","豆浆","老碗面"])
s2=pd.Series([1,1.5,2,10])
a={
    "食品":s1,
    "价格":s2
}
df1=pd.DataFrame(a)
print(df1)
print('======================')
'''
    食品    价格
0   馒头   1.0
1   包子   1.5
2   豆浆   2.0  '''
#df[columns]=数据
a=['太干','不错',"太甜",'好吃']
df1['评价']=a
print(df1)
'''
    食品    价格  评价
0   馒头   1.0  太干
1   包子   1.5  不错
2   豆浆   2.0  太甜
3  老碗面  10.0  好吃 '''
print('======================')

df1[columns]=df1[columns]+df1[columns]

df1['详细评价']=df1['食品']+df1['评价']
print(df1)
'''
    食品    价格  评价   详细评价
0   馒头   1.0  太干   馒头太干  
1   包子   1.5  不错   包子不错  
2   豆浆   2.0  太甜   豆浆太甜  
3  老碗面  10.0  好吃  老碗面好吃'''

列的删除

原数据

s1=pd.Series(["馒头","包子","豆浆","老碗面"])
s2=pd.Series([1,1.5,2,10])
a={
    "食品":s1,
    "价格":s2
}
df1=pd.DataFrame(a)
a=['太干','不错',"太甜",'好吃']
df1['评价']=a
df1['详细评价']=df1['食品']+df1['评价']
print(df1)
'''
    食品    价格  评价   详细评价
0   馒头   1.0  太干   馒头太干
1   包子   1.5  不错   包子不错
2   豆浆   2.0  太甜   豆浆太甜
3  老碗面  10.0  好吃  老碗面好吃'''

删除语法

del df[columns] 根据下标进行检索删除,没有返回值

del df1['评价']
print(df1)
'''
    食品    价格   详细评价
0   馒头   1.0   馒头太干
1   包子   1.5   包子不错
2   豆浆   2.0   豆浆太甜
3  老碗面  10.0  老碗面好吃'''

df.pop[columns] 根据下标进行检索删除,并返回删除的那一列

a=df1.pop("详细评价")
print(a)#要删除的数据
'''
0     馒头太干
1     包子不错
2     豆浆太甜
3    老碗面好吃
Name: 详细评价, dtype: object'''
print(df1)#删除完的数据
'''
    食品    价格
0   馒头   1.0
1   包子   1.5
2   豆浆   2.0
3  老碗面  10.0'''

行的读取

原数据

s1=pd.Series(["馒头","包子","豆浆","老碗面","大盘鸡","木桶饭","麻辣烫"],index=["row1","row2","row3","row4","row5","row6","row7"])
s2=pd.Series([1,1.5,2,10,13,11,20],index=["row1","row2","row3","row4","row5","row6","row7"])
s3=pd.Series(["好吃","好吃","好吃","好吃","好吃","好吃","好吃",],index=["row1","row2","row3","row4","row5","row6","row7"])
a={
    "食品":s1,
    "价格":s2,
    "评价":s3
}
df1=pd.DataFrame(a)
print(df1)
'''
       食品    价格  评价
row1   馒头   1.0  好吃
row2   包子   1.5  好吃
row3   豆浆   2.0  好吃
row4  老碗面  10.0  好吃
row5  大盘鸡  13.0  好吃
row6  木桶饭  11.0  好吃
row7  麻辣烫  20.0  好吃'''

loc[index] 查询一行数据

print(df1.loc['row1'])#       必须用自己新设置的索引
'''
食品     馒头
价格    1.0
评价     好吃
Name: row1, dtype: object'''

loc[index,columns] 精确到行和列,那就是一个数据

print(df1.loc['row4','食品'])#  老碗面      

loc[[index1,index2,….],[columns1,columns12,…..]] 获取多行多列

print(df1.loc[['row1','row3'],["食品","价格"]])

'''

      食品   价格        

row1  馒头  1.0

row3  豆浆  2.0'''

混合使用

print(df1.loc['row1',["食品","价格"]])#单行多列

'''

食品     馒头

价格    1.0

Name: row1, dtype: object'''

print(df1.loc[['row1','row3'],"食品"])#多行单列

'''

row1    馒头

row3    豆浆

Name: 食品, dtype: object'''

print(df1.loc["row1":"row3","食品":"价格"])#查询多行和多列(第几行到第几行,第几列到第几列)不是左开右闭

'''

      食品   价格

row1  馒头  1.0

row2  包子  1.5

row3  豆浆  2.0'''

print(df1.loc[["row1","row3"],"食品":"价格"])#结合使用

'''

      食品   价格

row1  馒头  1.0

row3  豆浆  2.0'''

#布尔索引

index_bool=[True,False,True,False,True,False,False]

col_bool=[True,False,True]

print(df1.loc[index_bool,col_bool])

'''

       食品  评价

row1   馒头  好吃

row3   豆浆  好吃

row5  大盘鸡  好吃'''

a=df1['价格']>8

print(df1.loc[a])

'''

       食品    价格  评价

row4  老碗面  10.0  好吃

row5  大盘鸡  13.0  好吃

row6  木桶饭  11.0  好吃

row7  麻辣烫  20.0  好吃'''

df.loc方法,根据行、列的标签值查询

df.iloc方法 根据行、列的数字位置查询

语法:
iloc[num_index] 根据索引位置获取行
iloc[num_index1:num_index2] 第几行到第几行,左开右闭
iloc[[num_index1,num_index2,…..]] 第几行和第几行
iloc[num_index,num_columns] #第几行的第几列
iloc[num_index,[num_columns1,num_columns2,….]] 第几行,第几列和第几列
iloc[num_index,[num_columns1:num_columns2]] 第几行,第几列到第几列,左开右闭
iloc[[num_index1,num_index2,…..],[num_columns1,num_columns2,….]]
iloc[num_index1:num_index2,[num_columns1:num_columns2]]

原数据

import pandas  as pd
s1=pd.Series(["馒头","包子","豆浆","老碗面","大盘鸡","木桶饭","麻辣烫"],index=["row1","row2","row3","row4","row5","row6","row7"])
s2=pd.Series([1,1.5,2,10,13,11,20],index=["row1","row2","row3","row4","row5","row6","row7"])
s3=pd.Series(["好吃","好吃","好吃","好吃","好吃","好吃","好吃",],index=["row1","row2","row3","row4","row5","row6","row7"])
a={
    "食品":s1,
    "价格":s2,
    "评价":s3
}
df1=pd.DataFrame(a)
print(df1)
'''
       食品    价格  评价
row1   馒头   1.0  好吃
row2   包子   1.5  好吃
row3   豆浆   2.0  好吃
row4  老碗面  10.0  好吃
row5  大盘鸡  13.0  好吃
row6  木桶饭  11.0  好吃
row7  麻辣烫  20.0  好吃'''
print(df1.iloc[0:4])#第几行到第几行,左开右闭
'''
       食品    价格  评价
row1   馒头   1.0  好吃
row2   包子   1.5  好吃
row3   豆浆   2.0  好吃
row4  老碗面  10.0  好吃 '''
print(df1.iloc[[0,3]])#第几行和第几行
'''
       食品    价格  评价
row1   馒头   1.0  好吃
row4  老碗面  10.0  好吃'''
print(df1.iloc[6,0])#麻辣烫                   第几行的第几列
print(df1.iloc[6,0:2])#第几行的,第几列到第几列
'''
食品     麻辣烫
价格    20.0
Name: row7, dtype: object'''
print(df1.iloc[6,[0,2]])#第几行的,第几列和第几列
'''
食品    麻辣烫
评价     好吃
Name: row7, dtype: object'''
print(df1.iloc[[0,2,4],[0,2]])#哪几行的哪几列
'''
       食品  评价
row1   馒头  好吃
row3   豆浆  好吃
row5  大盘鸡  好吃'''

df[num_index1:num_index2] 第几行到第几行 左开右闭—切片
df[label_index1:label_index2] 第几行到第几行,左开右开

import pandas  as pd

#原数据
s1=pd.Series(["馒头","包子","豆浆","老碗面","大盘鸡","木桶饭","麻辣烫"],index=["row1","row2","row3","row4","row5","row6","row7"])
s2=pd.Series([1,1.5,2,10,13,11,20],index=["row1","row2","row3","row4","row5","row6","row7"])
s3=pd.Series(["好吃","好吃","好吃","好吃","好吃","好吃","好吃",],index=["row1","row2","row3","row4","row5","row6","row7"])
a={
    "食品":s1,
    "价格":s2,
    "评价":s3
}
df1=pd.DataFrame(a)
print(df1)
'''
       食品    价格  评价
row1   馒头   1.0  好吃
row2   包子   1.5  好吃
row3   豆浆   2.0  好吃
row4  老碗面  10.0  好吃
row5  大盘鸡  13.0  好吃
row6  木桶饭  11.0  好吃
row7  麻辣烫  20.0  好吃'''

print(df1[0:4])#第一行到第五行,但是第五行不取
'''
       食品    价格  评价
row1   馒头   1.0  好吃
row2   包子   1.5  好吃
row3   豆浆   2.0  好吃
row4  老碗面  10.0  好吃 '''
print(df1["row1":"row3"])#第一行到第三行,第三行也取
'''
      食品   价格  评价
row1  馒头  1.0  好吃
row2  包子  1.5  好吃
row3  豆浆  2.0  好吃'''

行的添加

在末尾追加一行,返回一个新对象
df.append(other,ignore_index= False,verify_integrity = False,
sort = False)
other:要附加的数据,DataFrame或者Series等类型
ignore_index:如果是True,则不使用索引标签,默认false
verify_integrity:如果是True,在创建于重复项的索引时,引发valueError,默认时false
sort:如果原数据和添加数据的列没有对齐,则对列进行排序,不建议排序

x = [
    ["tom",10],
    ["jack",20],
    ["mike",30]
]
df = pd.DataFrame(x,columns=['name','age'],index=['row1','row2','row3'])
print(df)
print("-----------------------------------------")
y = [
    ["zs",10],
    ["ls",20],
    ["ww",30]
]
df1 = pd.DataFrame(y,columns=['name','age'],index=['row1','row2','row3'])
df2 = df.append(df1)
print(df2)
"""
   name  age
0   tom   10
1  jack   20
2  mike   30
3    zs   10
4    ls   20
5    ww   30
"""
print("------verify_integrity=True,在创建于重复项的索引时,引发valueError-------")
df1 = pd.DataFrame(y,columns=['name','age'],index=['row1','row2','row3'])
df2 = df.append(df1,verify_integrity=True)
print(df2)

行的删除

df1= df.drop(index) #删除某行,返回一个新数据

x = [
    ["tom",10],
    ["jack",20],
    ["mike",30]
]
df = pd.DataFrame(x,columns=['name','age'],index=['row1','row2','row3'])
print(df)
print("--------------------------")
df1= df.drop('row1')
print(df1)

Original: https://blog.csdn.net/weixin_62478198/article/details/121839818
Author: F濤
Title: DataFrame对象(创建,读取,添加,删除,方法)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/675962/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球