import numpy as np
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print("===========df原始数据========")
print(df)
#===========df原始数据========
# one two
# a 1.0 1
# b 2.0 2
# c 3.0 3
# d NaN 4
print("===========标签为b的数据========")
print(df.loc['b'])
#===========标签为b的数据========
#one 2.0
#two 2.0
#Name: b, dtype: float64
df.loc['b',"one"]
#2.0
df.loc['b':'d',"one"] # 注意
#b 2.0
#c 3.0
#d NaN
#Name: one, dtype: float64
df.loc[['a','b'],["one","two"]]
# one two
#a 1.0 1
#b 2.0 2
s = np.arange(12).reshape((3,4))
s
#array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11]])
s[[0,2],[0,3]]
#array([ 0, 11])
data = {'Name':['关羽', '刘备', '张飞', '曹操'],'Age':[28,34,29,42]}
index = ["rank1", "rank2", "rank3", "rank4"]
df = pd.DataFrame(data, index=index)
df
# Name Age
#rank1 关羽 28
#rank2 刘备 34
#rank3 张飞 29
#rank4 曹操 42
df.iloc[2]
#Name 张飞
#Age 29
#Name: rank3, dtype: object
df.iloc[[0,2]]
Name Age
rank1 关羽 28
rank3 张飞 29
df.iloc[0,1]
#28
#df.loc[1,"Name"]
#df.iloc[1,"Name"]
data = {'Name':['关羽', '刘备', '张飞', '曹操'],'Age':[28,34,29,42]}
index = ["rank1", "rank2", "rank3", "rank4"]
df = pd.DataFrame(data, index=index)
df
# Name Age
#rank1 关羽 28
#rank2 刘备 34
#rank3 张飞 29
#rank4 曹操 42
print("=====df.iloc[1:3]:=======")
print(df.iloc[1:3])
#=====df.iloc[1:3]:=======
# Name Age
#rank2 刘备 34
#rank3 张飞 29
print("=====df[1:3]:=======")
print(df[1:3])
#=====df[1:3]:=======
# Name Age
#rank2 刘备 34
#rank3 张飞 29
df.append(other, ignore_index=False, verify_integrity=False, sort=False)
data = {
'Name':['关羽', '刘备', '张飞', '曹操'],
'Age':[28, 34, 29, 42],
"Salary":[5000, 8000, 4500, 10000]
}
df = pd.DataFrame(data)
df
# Name Age Salary
# 0 关羽 28 5000
# 1 刘备 34 8000
# 2 张飞 29 4500
# 3 曹操 42 10000
d2 = {"Name":"诸葛亮", "Age":30}
df3 = df.append(d2)
print(df3)
d2 = {"Name":"诸葛亮", "Age":30}
df3 = df.append(d2, ignore_index=True) # 需要添加
print(df3)
# Name Age Salary
#0 关羽 28 5000.0
#1 刘备 34 8000.0
#2 张飞 29 4500.0
#3 曹操 42 10000.0
#4 诸葛亮 30 NaN
d2 = {"Name":"诸葛亮", "Age":30}
s = pd.Series(d2, name="a")
print(s)
df3 = df.append(s)
print(df3)
#Name 诸葛亮
#Age 30
#Name: a, dtype: object
# Name Age Salary
#0 关羽 28 5000.0
#1 刘备 34 8000.0
#2 张飞 29 4500.0
#3 曹操 42 10000.0
#a 诸葛亮 30 NaN
data = [
[1, 2, 3, 4],
[5, 6, 7, 8]
]
df = pd.DataFrame(data)
print(df)
# 0 1 2 3
#0 1 2 3 4
#1 5 6 7 8
a_l = [10,20]
df3 = df.append(a_l)
print(df3)
# 0 1 2 3
#0 1 2.0 3.0 4.0
#1 5 6.0 7.0 8.0
#0 10 NaN NaN NaN
#1 20 NaN NaN NaN
a_l = [[10,"20",30],[2,5,6]]
df4 = df.append(a_l)
print(df4)
# 0 1 2 3
#0 1 2 3 4.0
#1 5 6 7 8.0
#0 10 20 30 NaN
#1 2 5 6 NaN
print("=========使用:ignore_index=True===========")
df5 = df.append(a_l,ignore_index=True) # 需要添加
print(df5)
#=========使用:ignore_index=True===========
# 0 1 2 3
#0 1 2 3 4.0
#1 5 6 7 8.0
#2 10 20 30 NaN
#3 2 5 6 NaN
- 可以使用行索引标签,从 DataFrame 中删除某一行数据。如果索引标签存在重复,那么它们将被一起删除。示例如下:
df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])
df = df.append(df2)
print("=======源数据df=======")
print(df)
#=======源数据df=======
# a b
#0 1 2
#1 3 4
#0 5 6
#1 7 8
df1 = df.drop(0)
print("=======修改后数据df1=======")
print(df1)
=======修改后数据df1=======
# a b
#1 3 4
#1 7 8
名称 | 属性&方法描述 |
---|---|
T | 行和列转置。 |
axes | 返回一个仅以行轴标签和列轴标签为成员的列表。 |
dtypes | 返回每列数据的数据类型。 |
empty | DataFrame中没有数据或者任意坐标轴的长度为0,则返回True |
columns | 返回DataFrame所有列标签 |
shape | 返回一个元组,获取行数和列数,表示了 DataFrame 维度。 |
size | DataFrame中的元素数量。 |
values | 使用 numpy 数组表示 DataFrame 中的元素值。 |
head() | 返回前 n 行数据。 |
tail() | 返回后 n 行数据。 |
rename() | rename(columns=字典) ,修改列名 |
info() | 可以显示信息,例如行数/列数,总内存使用量,每列的数据类型以及不缺少值的元素数 |
sort_index() | 默认根据行标签对所有行排序,或根据列标签对所有列排序,或根据指定某列或某几列对行排序。 |
sort_values() | 既可以根据列数据,也可根据行数据排序 |
data = {
'Name':['关羽', '刘备', '张飞', '曹操'],
'Age':[28, 34, 29, 42],
"Salary":[5000, 8000, 4500, 10000]
}
df = pd.DataFrame(data)
df
# Name Age Salary
#0 关羽 28 5000
#1 刘备 34 8000
#2 张飞 29 4500
#3 曹操 42 10000
df.T
0 1 2 3
Name 关羽 刘备 张飞 曹操
Age 28 34 29 42
Salary 5000 8000 4500 10000
print(df.axes)
[df.index,df.columns]
#[RangeIndex(start=0, stop=4, step=1), Index(['Name', 'Age', 'Salary'], dtype='object')]
df.dtypes
Name object
Age int64
Salary int64
dtype: object
df.empty
#False
empty_df = pd.DataFrame()
empty_df.empty
#True
The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
。df.columns
#Index(['Name', 'Age', 'Salary'], dtype='object')
len(df.columns)
#3
df.columns.size
#3
df.shape
#(4,3)
row_num,column_num = df.shape
print(row_num,column_num )
#4 3
df.values
#array([['关羽', 28, 5000],
# ['刘备', 34, 8000],
# ['张飞', 29, 4500],
# ['曹操', 42, 10000]], dtype=object)
df.head(3)
# Name Age Salary
#0 关羽 28 5000
#1 刘备 34 8000
#2 张飞 29 4500
df.tail(3)
# Name Age Salary
#1 刘备 34 8000
#2 张飞 29 4500
#3 曹操 42 10000
DataFrame.rename(index=None, columns=None, inplace=False)
df
# Name Age Salary
#0 关羽 28 5000
#1 刘备 34 8000
#2 张飞 29 4500
#3 曹操 42 10000
df.rename(index={1:"row2", 2:"row3"})
df
# Name Age Salary
#0 关羽 28 5000
#row2 刘备 34 8000
#row3 张飞 29 4500
#3 曹操 42 10000
df.rename(columns = {"Name":"name", "Age":"age"})
df
# name age Salary
#0 关羽 28 5000
#1 刘备 34 8000
#2 张飞 29 4500
#3 曹操 42 10000
df.rename(index={1:"row2", 2:"row3"}, columns = {"Name":"name", "Age":"age"}, inplace=True)
df
# name age Salary
#0 关羽 28 5000
#row2 刘备 34 8000
#row3 张飞 29 4500
#3 曹操 42 10000
data = {"name":"诸葛亮","age":30}
df = df.append(data, ignore_index =True)
df
# name age Salary
#0 关羽 28 5000.0
#1 刘备 34 8000.0
#2 张飞 29 4500.0
#3 曹操 42 10000.0
#4 诸葛亮 30 NaN
df.info()
#
#RangeIndex: 5 entries, 0 to 4
#Data columns (total 3 columns):
## Column Non-Null Count Dtype
#--- ------ -------------- -----
#0 name 5 non-null object
#1 age 5 non-null int64
#2 Salary 4 non-null float64
#dtypes: float64(1), int64(1), object(1)
#memory usage: 248.0+ bytes
sort_index(axis=0, ascending=True, inplace=False)
df = pd.DataFrame({'b':[1,2,2,3],'a':[4,3,2,1],'c':[1,3,8,2]},index=[2,0,1,3])
df
# b a c
#2 1 4 1
#0 2 3 3
#1 2 2 8
#3 3 1 2
df.sort_index()
# b a c
#0 2 3 3
#1 2 2 8
#2 1 4 1
#3 3 1 2
df.sort_index(axis=1)
# a b c
#2 4 1 1
#0 3 2 3
#1 2 2 8
#3 1 3 2
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
df = pd.DataFrame({'b':[1,2,3,2],'a':[4,3,2,1],'c':[1,3,8,2]},index=[2,0,1,3])
df
# b a c
#2 1 4 1
#0 2 3 3
#1 3 2 8
#3 2 1 2
df.sort_values(by='b')
print(df)
# b a c
#2 1 4 1
#0 2 3 3
#3 2 1 2
#1 3 2 8
df.sort_values(by=['b','a'],ascending=[False,True])
print(df)
# b a c
#1 3 2 8
#3 2 1 2
#0 2 3 3
#2 1 4 1
df.sort_values(by=3,axis=1)
print(df)
# a b c
#2 4 1 1
#0 3 2 3
#1 2 3 8
#3 1 2 2
df.sort_values(by=[3,0],axis=1,ascending=[True,False])
print(df)
# a b c
#2 4 1 1
#0 3 3 2
#1 2 8 3
#3 1 2 2