Series对象
(一) 增
import numpy as np
import pandas as pd
series_1 = pd.Series(range(5),index=['a','b','c','d','e'])
print(series_1)
# a 0
# b 1
# c 2
# d 3
# e 4
# dtype: int64
1. 改变初始数据
不可使用索引位置(索引超出界限)
series_1['f'] = 999
print(series_1)
# a 0
# b 1
# c 2
# d 3
# e 4
# f 999
# dtype: int64
2. 生成新的Series对象
res = series_1.append(pd.Series({'g':888}))
print(res,type(res),res is series_1,sep='\n')
# a 0
# b 1
# c 2
# d 3
# e 4
# f 999
# g 888
# dtype: int64
# <class 'pandas.core.series.Series'>
# False
(二) 删
1. del
series_2 = pd.Series(range(5), index=['a', 'b', 'c', 'd', 'e'])
del series_2['c']
print(series_2)
# result :
a 0
b 1
d 3
e 4
dtype: int64
2. drop 生成新对象(不改变源对象)
(1)删除单条数据
res = series_2.drop('a')
print(res,res is series_2,sep='\n')
# result :
b 1
d 3
e 4
dtype: int64
##################################################################
(2)删除多条数据
res = series_2.drop(['b','d'])
print(res,res is series_2,sep='\n')
# result :
a 0
e 4
dtype: int64
False
(3) 使用inplace属性为True不生成新对象
res = series_2.drop('a',inplace=True) # 此时res为None
(三) 改
series_3 = pd.Series(range(5), index=['a', 'b', 'c', 'd', 'e'])
print(series_3)
# result:
a 0
b 1
c 2
d 3
e 4
dtype: int64
1. 位置索引
series_3[4] = 9
print(series_3)
a 0
b 1
c 2
d 3
e 9
dtype: int64
2. 标签索引
series_3['c'] = 5
print(series_3)
a 0
b 1
c 5
d 3
e 4
dtype: int64
(四) 查
import numpy as np
import pandas as pd
series_4 = pd.Series(np.arange(5),index=['a','b','c','d','e'])
print(series_4)
# a 0
# b 1
# c 2
# d 3
# e 4
# dtype: int32
1. 获取单个或连续数据
索引位置
print('''series_4[4] = ''',series_4[4])
# reult
series_4[4] = 4
索引名称
print('''series_4['c'] = ''',series_4['c'])
# result
series_4['c'] = 2
位置索引 切片
不包含末位
series_4[2:4] # 数学表示为 [2,4) OR [2,3]
另一种写法 : series_4.iloc[0:3])
# c 2
# d 3
# dtype: int32
名称索引 切片
包含末位
series_4['a':'c'] # 数学表示为 ['a','c']
另一种写法 : series_4.loc['a':'c']
# a 0
# b 1
# c 2
# dtype: int32
2. 获取非连续数据
不连续 位置索引
print(series_4[[0,2,4]])
# a 0
# c 2
# e 4
# dtype: int32
不连续 名称索引
print(series_4[['b','d']])
# b 1
# d 3
# dtype: int32
布尔索引
print(series_4[series_4 > 2])
# series_4 > 2 为布尔型Series对象
# series_4[series_4 > 2] 获取结果为True的数据
# d 3
# e 4
# dtype: int32
DataFrame对象
(一)增
import numpy as np
import pandas as pd
df1 = pd.DataFrame(np.arange(12).reshape(3,4),index=[1,2,3],columns=['a','b','c','d'])
print(df1)
a b c d
1 0 1 2 3
2 4 5 6 7
3 8 9 10 11
增加列
(1) 方式一 :
df1[4] = 9
print('df1 : ',df1,sep = '\n')
# result:
df1 :
a b c d 4
1 0 1 2 3 9
2 4 5 6 7 9
3 8 9 10 11 9
(2) 方式二 :
df1[5] = [11,22,33]
print('df1 : ',df1,sep = '\n')
# result:
df1 :
a b c d 4 5
1 0 1 2 3 9 11
2 4 5 6 7 9 22
3 8 9 10 11 9 33
(3) 方法三 : 使用insert方法
df1.insert(0,'e',[9,99,999])
# 在0位置添加 列 e ,其value为 [9,99,999]
print('df1 : ',df1,sep = '\n')
# result:
df1 :
e a b c d 4 5
1 9 0 1 2 3 9 11
2 99 4 5 6 7 9 22
3 999 8 9 10 11 9 33
增加行
(1) 方法一 : 标签索引loc [works on labels in the index]
df1.loc['z'] = [1,1,1,1]
df1.loc['y'] = 1
print(df1)
# result :
a b c d
1 0 1 2 3
2 4 5 6 7
3 8 9 10 11
z 1 1 1 1
y 1 1 1 1
(2) 方法二 : 生成新的DataFrame对象
res = df1.append({'a':'a'},ignore_index=True) # 生成新的DataFrame对象
print(res,res is df1,sep='\n')
# result :
a b c d
0 0 1.0 2.0 3.0
1 4 5.0 6.0 7.0
2 8 9.0 10.0 11.0
3 a NaN NaN NaN
False
(二)删
import numpy as np
import pandas as pd
df2 = pd.DataFrame(np.arange(12).reshape(3,4),index=[1,2,3],columns=['a','b','c','d'])
print(df2)
df2:
a b c d
1 0 1 2 3
2 4 5 6 7
3 8 9 10 11
#############################################################################################
1.删除列
(1) del df2['c']
# result(df2)
a b d
1 0 1 3
2 4 5 7
3 8 9 11
(2) df2.drop('b',axis=1)
# drop默认删除行(即axis=0),生成新对象
(3) df2.drop(['b','d'],axis='columns')
# axis='columns'与axis=1效果相同
2.删除行
df2.drop([1,3])
(三) 改
df3 = pd.DataFrame(np.arange(12).reshape(3,4),index=['A','B','C'],columns=['a','b','c','d'])
print(df3)
###########RESULT##############
a b c d
A 0 1 2 3
B 4 5 6 7
C 8 9 10 11
1. 属性(only column)
df3.a = 9
###########RESULT##############
a b c d
A 9 1 2 3
B 9 5 6 7
C 9 9 10 11
df3.a = [1,11,111]
###########RESULT##############
a b c d
A 1 1 2 3
B 11 5 6 7
C 111 9 10 11
2. 标签索引(only column)
若中括号内无该索引,便增加新的一列
df3['b'] = 9
###########RESULT##############
a b c d
A 0 9 2 3
B 4 9 6 7
C 8 9 10 11
df3['b'] = [1,11,111]
###########RESULT##############
a b c d
A 0 1 2 3
B 4 11 6 7
C 8 111 10 11
3. loc
1. 修改一行
df3.loc['A'] = [9,99,999,9999] # df3.loc['A'] = 9
2. 修改具体某一位置
df3.loc['B','c'] = 666
###########RESULT##############
a b c d
A 9 99 999 9999
B 4 5 666 7
C 8 9 10 11
(四) 查
df4 = pd.DataFrame(np.arange(12).reshape(3,4),index=['A','B','C'],columns=['a','b','c','d'])
###################df4###########################
a b c d
A 0 1 2 3
B 4 5 6 7
C 8 9 10 11
1. 获取单列
(1) print(df4['c'])
###########RESULT##############
A 2
B 6
C 10
Name: c, dtype: int32
(2) print(df4[['c']])
###########RESULT##############
c
A 2
B 6
C 10
2. 获取单个值
(1) print(df4['c']['B']) ## 列在前,行在后
###########RESULT##############
6
(2) print(df4.loc['B', 'c'])
###########RESULT##############
6
3. 获取多列
print(df4[['b', 'd']])
###########RESULT##############
b d
A 1 3
B 5 7
C 9 11
4. 获取多行(切片)
print(df4[:2]) # 获取 0,1 两行
###########RESULT##############
a b c d
A 0 1 2 3
B 4 5 6 7
5. 获取多行多列
df4.loc['A':'B','b':'c'] # 获取 A至B行,b至c列
df4.iloc[0:2,1:3] # 获取 A至B行,b至c列
###########RESULT##############
b c
A 1 2
B 5 6