目录
0. 回顾:
之前我们学习了pandas其中一类series,这一节我们将学习另一类dataframe。
1. 定义dataframe对象
最常用的方法是将一个dict对象传递给dataframe()构造函数。
示例1:
import pandas as pd
data = {'color': ['blue', 'red', 'green'],
'price': [1, 3, 5]}
print(data)
df = pd.DataFrame(data)
print(df)
运行结果为:
{'color': ['blue', 'red', 'green'], 'price': [1, 3, 5]}
color price
0 blue 1
1 red 3
2 green 5
可以看到,运行之后,dataframe结构跟工作表相似。
示例2:我们还可以选择自己感兴趣的列。
import pandas as pd
data = {'color': ['blue', 'red', 'green'],
'price': [1, 3, 5]}
print(data)
df = pd.DataFrame(data, columns=['price'])
print(df)
运行结果为:
{'color': ['blue', 'red', 'green'], 'price': [1, 3, 5]}
price
0 1
1 3
2 5
当我们没有给index传输时,默认从0开始,当然我们也可以自己添加。
示例3:
import pandas as pd
data = {'color': ['blue', 'red', 'green'],
'price': [1, 3, 5]}
print(data)
df = pd.DataFrame(data, index=['一', '二', '三'])
print(df)
运行结果为:
{'color': ['blue', 'red', 'green'], 'price': [1, 3, 5]}
color price
一 blue 1
二 red 3
三 green 5
还可以使用更加简单的进行定义。
示例4:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(9).reshape([3, 3]),
index=['一', '二', '三'],
columns=['blue', 'red', 'green'])
print(df)
运行结果为:
blue red green
一 0 1 2
二 3 4 5
三 6 7 8
2. 选取元素
利用columns,index,values属性进行选取。
示例5:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(9).reshape([3, 3]),
index=['一', '二', '三'],
columns=['blue', 'red', 'green'])
print(df.columns)
print(df.index)
print(df.values)
运行结果为:
Index(['blue', 'red', 'green'], dtype='object')
Index(['一', '二', '三'], dtype='object')
[[0 1 2]
[3 4 5]
[6 7 8]]
选择相关列,则直接用名称作为索引就行。
示例6:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(9).reshape([3, 3]),
index=['一', '二', '三'],
columns=['blue', 'red', 'green'])
print(df['red'])
运行结果为:
一 1
二 4
三 7
Name: red, dtype: int32
调用某一行时直接用iloc进行索引就行。
示例7:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(9).reshape([3, 3]),
index=['一', '二', '三'],
columns=['blue', 'red', 'green'])
print(df.iloc[0])
运行结果为:
blue 0
red 1
green 2
Name: 一, dtype: int32
当要获取其中的一个元素,两个方法叠加就行。
示例8:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(9).reshape([3, 3]),
index=['一', '二', '三'],
columns=['blue', 'red', 'green'])
print(df['red'].iloc[0])
运行结果为:
1
3. 赋值
利用和获取元素类似的方法进行赋值,跟字典的操作相似。
示例9:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(9).reshape([3, 3]),
index=['一', '二', '三'],
columns=['blue', 'red', 'green'])
df['orange'] = 7
print(df)
df['black'] = pd.Series(np.arange(3), index=['一', '二', '三'])
print(df)
运行结果为:
blue red green orange
一 0 1 2 7
二 3 4 5 7
三 6 7 8 7
blue red green orange black
一 0 1 2 7 0
二 3 4 5 7 1
三 6 7 8 7 2
4. 元素的所属关系
利用isin()来判读元素是否属于其中。
示例10:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(9).reshape([3, 3]),
index=['一', '二', '三'],
columns=['blue', 'red', 'green'])
print(df.isin([3]))
print(df[df.isin([3])])
运行结果为:
blue red green
一 False False False
二 True False False
三 False False False
blue red green
一 NaN NaN NaN
二 3.0 NaN NaN
三 NaN NaN NaN
5. 删除一列
利用del()函数进行删除。
示例11:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(9).reshape([3, 3]),
index=['一', '二', '三'],
columns=['blue', 'red', 'green'])
print(df)
del df['red']
print(df)
运行结果为:
blue red green
一 0 1 2
二 3 4 5
三 6 7 8
blue green
一 0 2
二 3 5
三 6 8
6. 筛选
跟series用法类似。
示例12:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(9).reshape([3, 3]),
index=['一', '二', '三'],
columns=['blue', 'red', 'green'])
print(df)
del df['red']
print(df[df < 4])
运行结果为:
blue red green
一 0 1 2
二 3 4 5
三 6 7 8
blue green
一 0.0 2.0
二 3.0 NaN
三 NaN NaN
7. index对象的方法
利用idmin()和idmax()函数获取索引值最小和最大的元素。
示例13:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(9).reshape([3, 3]),
index=['一', '二', '三'],
columns=['blue', 'red', 'green'])
print(df)
print(df.idxmin())
df.loc[df.index[1], 'red'] = 10
print(df.idxmax())
运行结果为:
blue red green
一 0 1 2
二 3 4 5
三 6 7 8
blue 一
red 一
green 一
dtype: object
blue 三
red 二
green 三
dtype: object