Series
import pandas as pd
obj=pd.Series([1,2,-3,-4])
print(obj)
0 1
1 2
2 -3
3 -4
dtype: int64
i=["a","c","d","a"]
v=[2,4,5,7]
t=pd.Series(data=v,index=i,name="col")
print(t)
a 2
c 4
d 5
a 7
Name: col, dtype: int64
val = [2, 4, 5, 6]
idx1 = range(10, 14)
idx2 = "hello the cruel world".split()
s0 = pd.Series(val)
s1 = pd.Series(val, index = idx1)
t = pd.Series(val, index = idx2)
print(s0)
0 2
1 4
2 5
3 6
dtype: int64
print(s1)
10 2
11 4
12 5
13 6
dtype: int64
print(t)
hello 2
the 4
cruel 5
world 6
dtype: int64
print(s0.index)
RangeIndex(start=0, stop=4, step=1)
print(s1.index)
RangeIndex(start=10, stop=14, step=1)
print(t.index)
Index([‘hello’, ‘the’, ‘cruel’, ‘world’], dtype=‘object’)
print(s0[0])
2
print(s1[10])
2
print('default:',t[0],'label:' ,t["hello"])
default: 2 label: 2
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj3 = pd.Series(sdata)
print(obj3)
Ohio 35000
Texas 71000
Oregon 16000
Utah 5000
dtype: int64
通过字典创建
sdata = {"a" : 100, "b" : 200, "e" : 300}
letter = ["a","b","c","e" ]
obj = pd.Series(sdata, index = letter)
print(obj)
a 100.0
b 200.0
c NaN
e 300.0
dtype: float64
键值和指定的索引不匹配
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj1 = pd.Series(sdata)
states = ['California', 'Ohio', 'Oregon', 'Texas']
obj2 = pd.Series(sdata, index = states)
print('obj1:\n',obj1)
print('obj2:\n',obj2)
obj1:
Ohio 35000
Texas 71000
Oregon 16000
Utah 5000
dtype: int64
obj2:
California NaN
Ohio 35000.0
Oregon 16000.0
Texas 71000.0
dtype: float64
不同索引数据的自动对齐
print(obj1+obj2)
California NaN
Ohio 70000.0
Oregon 32000.0
Texas 142000.0
Utah NaN
dtype: float64
Series 索引的修改
obj = pd.Series([4,7,-3,2])
print("修改前:\n",obj)
obj.index = ['Bob', 'Steve', 'Jeff', 'Ryan']
print("修改后:\n",obj)
修改前:
0 4
1 7
2 -3
3 2
dtype: int64
修改后:
Bob 4
Steve 7
Jeff -3
Ryan 2
dtype: int64
dataFrame
dataFrame 的创建
data = {
'name':['张三', '李四', '王五', '小明'],
'sex':['female', 'female', 'male', 'male'],
'year':[2001, 2001, 2003, 2002],
'city':['北京', '上海', '广州', '北京']
}
df=pd.DataFrame(data)
print(df)
name sex year city
0 张三 female 2001 北京
1 李四 female 2001 上海
2 王五 male 2003 广州
3 小明 male 2002 北京
索引
df1=pd.DataFrame(data,columns=['year','name','sex','city'])
print(df1)
.
. year name sex city
0 2001 张三 female 北京
1 2001 李四 female 上海
2 2003 王五 male 广州
3 2002 小明 male 北京
缺失值
df2=pd.DataFrame(data,columns=['year','name','sex','city','address'])
print(df2)
.
. year name sex city address
0 2001 张三 female 北京 NaN
1 2001 李四 female 上海 NaN
2 2003 王五 male 广州 NaN
3 2002 小明 male 北京 NaN
指定列名
df3=pd.DataFrame(data,columns=['year','name','sex','city'],index=['a','b','c','d'])
print(df3)
.
. year name sex city
a 2001 张三 female 北京
b 2001 李四 female 上海
c 2003 王五 male 广州
d 2002 小明 male 北京
索引对象 属性
print(df3)
print(df3.index)
print(df3.columns)
.
. year name sex city
a 2001 张三 female 北京
b 2001 李四 female 上海
c 2003 王五 male 广州
d 2002 小明 male 北京
Index([‘a’, ‘b’, ‘c’, ‘d’], dtype=‘object’)
Index([‘year’, ‘name’, ‘sex’, ‘city’], dtype=‘object’)
print('name' in df3.columns)
print('a' in df3.index)
True
True
print(df3.shape)
(4, 4)
print(df3.ndim)
2
print(df3.size)
16
print(df3.values)
[[2001 ‘张三’ ‘female’ ‘北京’]
[2001 ‘李四’ ‘female’ ‘上海’]
[2003 ‘王五’ ‘male’ ‘广州’]
[2002 ‘小明’ ‘male’ ‘北京’]]
df
|
name |
sex |
year |
city |
0 |
张三 |
female |
2001 |
北京 |
1 |
李四 |
female |
2001 |
上海 |
2 |
王五 |
male |
2003 |
广州 |
3 |
小明 |
male |
2002 |
北京 |
插入索引值
df.index
RangeIndex(start=0, stop=4, step=1)
df.index.insert(1,'w')
Index([0, ‘w’, 1, 2, 3], dtype=‘object’)
索引操作
重建索引
obj = pd.Series([7.2,-4.3,4.5,3.6],index = ['b', 'a', 'd', 'c'])
print(obj)
b 7.2
a -4.3
d 4.5
c 3.6
dtype: float64
obj.reindex(['a','b','c','d','e'])
a -4.3
b 7.2
c 3.6
d 4.5
e NaN
dtype: float64
obj.reindex(['a','b','c','d','e'],fill_value=4)
a -4.3
b 7.2
c 3.6
d 4.5
e 4.0
dtype: float64
import numpy as np
obj1=pd.Series(['blue','red','black'],index=[0,2,4])
obj1
0 blue
2 red
4 black
dtype: object
obj1.reindex(np.arange(6))
0 blue
1 NaN
2 red
3 NaN
4 black
5 NaN
dtype: object
obj1.reindex(np.arange(6),method='ffill')
0 blue
1 blue
2 red
3 red
4 black
5 black
dtype: object
obj1.reindex(np.arange(6),method='bfill')
0 blue
1 red
2 red
3 black
4 black
5 NaN
dtype: object
df4=pd.DataFrame(np.arange(9).reshape(3,3),index=['a','c','d'],columns=['one','two','four'])
df4
|
one |
two |
four |
a |
0 |
1 |
2 |
c |
3 |
4 |
5 |
d |
6 |
7 |
8 |
print(df4)
.one two four
a 0 1 2
c 3 4 5
d 6 7 8
df4.reindex(index=['a','b','c','d'],columns=['one','two','three','four'])
|
one |
two |
three |
four |
a |
0.0 |
1.0 |
NaN |
2.0 |
b |
NaN |
NaN |
NaN |
NaN |
c |
3.0 |
4.0 |
NaN |
5.0 |
d |
6.0 |
7.0 |
NaN |
8.0 |
df4.reindex(index=['a','b','c','d'],columns=['one','two','three','four'],fill_value=3)
|
one |
two |
three |
four |
a |
0 |
1 |
3 |
2 |
b |
3 |
3 |
3 |
3 |
c |
3 |
4 |
3 |
5 |
d |
6 |
7 |
3 |
8 |
df4
|
one |
two |
four |
a |
0 |
1 |
2 |
c |
3 |
4 |
5 |
d |
6 |
7 |
8 |
df4.reindex(index=['a','b','c','d'],method='ffill')
|
one |
two |
four |
a |
0 |
1 |
2 |
b |
0 |
1 |
2 |
c |
3 |
4 |
5 |
d |
6 |
7 |
8 |
df4.reindex(index=['a','b','c','d'],method='bfill')
|
one |
two |
four |
a |
0 |
1 |
2 |
b |
3 |
4 |
5 |
c |
3 |
4 |
5 |
d |
6 |
7 |
8 |
df1
|
year |
name |
sex |
city |
0 |
2001 |
张三 |
female |
北京 |
1 |
2001 |
李四 |
female |
上海 |
2 |
2003 |
王五 |
male |
广州 |
3 |
2002 |
小明 |
male |
北京 |
df5=df1.set_index('city')
df5
|
year |
name |
sex |
city |
|
|
|
北京 |
2001 |
张三 |
female |
上海 |
2001 |
李四 |
female |
广州 |
2003 |
王五 |
male |
北京 |
2002 |
小明 |
male |
df5.reset_index()
|
city |
year |
name |
sex |
0 |
北京 |
2001 |
张三 |
female |
1 |
上海 |
2001 |
李四 |
female |
2 |
广州 |
2003 |
王五 |
male |
3 |
北京 |
2002 |
小明 |
male |
df1
|
year |
name |
sex |
city |
0 |
2001 |
张三 |
female |
北京 |
1 |
2001 |
李四 |
female |
上海 |
2 |
2003 |
王五 |
male |
广州 |
3 |
2002 |
小明 |
male |
北京 |
df5
|
year |
name |
sex |
city |
|
|
|
北京 |
2001 |
张三 |
female |
上海 |
2001 |
李四 |
female |
广州 |
2003 |
王五 |
male |
北京 |
2002 |
小明 |
male |
df5[['name','year']]
|
name |
year |
city |
|
|
北京 |
张三 |
2001 |
上海 |
李四 |
2001 |
广州 |
王五 |
2003 |
北京 |
小明 |
2002 |
display(df5.select_dtypes(exclude='int64').head())
|
name |
sex |
city |
|
|
北京 |
张三 |
female |
上海 |
李四 |
female |
广州 |
王五 |
male |
北京 |
小明 |
male |
df5.select_dtypes(include=['int64']).head()
|
year |
city |
|
北京 |
2001 |
上海 |
2001 |
广州 |
2003 |
北京 |
2002 |
df5.select_dtypes(include=['int64']).head(3)
|
year |
city |
|
北京 |
2001 |
上海 |
2001 |
广州 |
2003 |
df
|
name |
sex |
year |
city |
0 |
张三 |
female |
2001 |
北京 |
1 |
李四 |
female |
2001 |
上海 |
2 |
王五 |
male |
2003 |
广州 |
3 |
小明 |
male |
2002 |
北京 |
df[:2]
|
name |
sex |
year |
city |
0 |
张三 |
female |
2001 |
北京 |
1 |
李四 |
female |
2001 |
上海 |
df[1:3]
|
name |
sex |
year |
city |
1 |
李四 |
female |
2001 |
上海 |
2 |
王五 |
male |
2003 |
广州 |
df[1:]
|
name |
sex |
year |
city |
1 |
李四 |
female |
2001 |
上海 |
2 |
王五 |
male |
2003 |
广州 |
3 |
小明 |
male |
2002 |
北京 |
df.head(3)
|
name |
sex |
year |
city |
0 |
张三 |
female |
2001 |
北京 |
1 |
李四 |
female |
2001 |
上海 |
2 |
王五 |
male |
2003 |
广州 |
df.head()
|
name |
sex |
year |
city |
0 |
张三 |
female |
2001 |
北京 |
1 |
李四 |
female |
2001 |
上海 |
2 |
王五 |
male |
2003 |
广州 |
3 |
小明 |
male |
2002 |
北京 |
df.tail(3)
|
name |
sex |
year |
city |
1 |
李四 |
female |
2001 |
上海 |
2 |
王五 |
male |
2003 |
广州 |
3 |
小明 |
male |
2002 |
北京 |
df.sample(3)
|
name |
sex |
year |
city |
2 |
王五 |
male |
2003 |
广州 |
1 |
李四 |
female |
2001 |
上海 |
3 |
小明 |
male |
2002 |
北京 |
df.sample(frac=0.8)
|
name |
sex |
year |
city |
0 |
张三 |
female |
2001 |
北京 |
3 |
小明 |
male |
2002 |
北京 |
1 |
李四 |
female |
2001 |
上海 |
df5
|
year |
name |
sex |
city |
|
|
|
北京 |
2001 |
张三 |
female |
上海 |
2001 |
李四 |
female |
广州 |
2003 |
王五 |
male |
北京 |
2002 |
小明 |
male |
df5.loc[:,['name','year']]
|
name |
year |
city |
|
|
北京 |
张三 |
2001 |
上海 |
李四 |
2001 |
广州 |
王五 |
2003 |
北京 |
小明 |
2002 |
df5.loc[['北京','上海'],['name','year']]
|
name |
year |
city |
|
|
北京 |
张三 |
2001 |
北京 |
小明 |
2002 |
上海 |
李四 |
2001 |
df5.loc[df5['year']<=2002,['name','year']]
|
name |
year |
city |
|
|
北京 |
张三 |
2001 |
上海 |
李四 |
2001 |
北京 |
小明 |
2002 |
df5
|
year |
name |
sex |
city |
|
|
|
北京 |
2001 |
张三 |
female |
上海 |
2001 |
李四 |
female |
广州 |
2003 |
王五 |
male |
北京 |
2002 |
小明 |
male |
df5.iloc[:,2]
city
北京 female
上海 female
广州 male
北京 male
Name: sex, dtype: object
df5.iloc[[1,3]]
|
year |
name |
sex |
city |
|
|
|
上海 |
2001 |
李四 |
female |
北京 |
2002 |
小明 |
male |
df5.iloc[[1,3],:2]
|
year |
name |
city |
|
|
上海 |
2001 |
李四 |
北京 |
2002 |
小明 |
df5.iloc[[1,3],[0,2]]
|
year |
sex |
city |
|
|
上海 |
2001 |
female |
北京 |
2002 |
male |
df5
|
year |
name |
sex |
city |
|
|
|
北京 |
2001 |
张三 |
female |
上海 |
2001 |
李四 |
female |
广州 |
2003 |
王五 |
male |
北京 |
2002 |
小明 |
male |
df5.query('year>2001')
|
year |
name |
sex |
city |
|
|
|
广州 |
2003 |
王五 |
male |
北京 |
2002 |
小明 |
male |
df5.query('year>2001 & year<2003')
|
year |
name |
sex |
city |
|
|
|
北京 |
2002 |
小明 |
male |
df5[df5['year']==2001]
|
year |
name |
sex |
city |
|
|
|
北京 |
2001 |
张三 |
female |
上海 |
2001 |
李四 |
female |
df5.query('year==2001')
|
year |
name |
sex |
city |
|
|
|
北京 |
2001 |
张三 |
female |
上海 |
2001 |
李四 |
female |
df
data1 = {'city':'兰州','name':'李红','year':2005,'sex':'female'}
df
|
name |
sex |
year |
city |
0 |
张三 |
female |
2001 |
北京 |
1 |
李四 |
female |
2001 |
上海 |
2 |
王五 |
male |
2003 |
广州 |
3 |
小明 |
male |
2002 |
北京 |
df['score']=[56,85,98,78]
df
|
name |
sex |
year |
city |
score |
0 |
张三 |
female |
2001 |
北京 |
56 |
1 |
李四 |
female |
2001 |
上海 |
85 |
2 |
王五 |
male |
2003 |
广州 |
98 |
3 |
小明 |
male |
2002 |
北京 |
78 |
df.insert(1,'No',['001','002','003','004'])
df
|
name |
No |
sex |
year |
city |
score |
0 |
张三 |
001 |
female |
2001 |
北京 |
56 |
1 |
李四 |
002 |
female |
2001 |
上海 |
85 |
2 |
王五 |
003 |
male |
2003 |
广州 |
98 |
3 |
小明 |
004 |
male |
2002 |
北京 |
78 |
print(df5)
print(df5.drop('广州'))
print(df5)
.
year name sex
city
北京 2001 张三 female
上海 2001 李四 female
广州 2003 王五 male
北京 2002 小明 male
year name sex
city
北京 2001 张三 female
上海 2001 李四 female
北京 2002 小明 male
year name sex
city
北京 2001 张三 female
上海 2001 李四 female
广州 2003 王五 male
北京 2002 小明 male
df['year']=2001
df
|
name |
No |
sex |
year |
city |
score |
0 |
张三 |
001 |
female |
2001 |
北京 |
56 |
1 |
李四 |
002 |
female |
2001 |
上海 |
85 |
2 |
王五 |
003 |
male |
2001 |
广州 |
98 |
3 |
小明 |
004 |
male |
2001 |
北京 |
78 |
df.replace('张三','李明',inplace=True)
df
|
name |
No |
sex |
year |
city |
score |
0 |
李明 |
001 |
female |
2001 |
北京 |
56 |
1 |
李四 |
002 |
female |
2001 |
上海 |
85 |
2 |
王五 |
003 |
male |
2001 |
广州 |
98 |
3 |
小明 |
004 |
male |
2001 |
北京 |
78 |
df.replace({'李明':'张山山','王五':'小五'},inplace=True)
df
|
name |
No |
sex |
year |
city |
score |
0 |
张山山 |
001 |
female |
2001 |
北京 |
56 |
1 |
李四 |
002 |
female |
2001 |
上海 |
85 |
2 |
小五 |
003 |
male |
2001 |
广州 |
98 |
3 |
小明 |
004 |
male |
2001 |
北京 |
78 |
df.rename(columns={'No':'number'},inplace=True)
df
|
name |
number |
sex |
year |
city |
score |
0 |
张山山 |
001 |
female |
2001 |
北京 |
56 |
1 |
李四 |
002 |
female |
2001 |
上海 |
85 |
2 |
小五 |
003 |
male |
2001 |
广州 |
98 |
3 |
小明 |
004 |
male |
2001 |
北京 |
78 |