import numpy as np
from pandas import Series,DataFrame
import pandas as pd# 1.二维数组创建,自动生成行索引和列索引
DataFrame(np.arange(10).reshape(2,5))# ====结果====
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
# 2.字典创建,注意字典的数据格式:字典的值是数组、列表或元组
data = {'name':['张三', '李四', '王五', '小明'],'sex':['female', 'female', 'male', 'male'],'year':[2001, 2001, 2003, 2002],'city':['北京', '上海', '广州', '北京']
}
df = DataFrame(data)
df #注意生成的DataFrame的列索引和原始字典中键、值的关系#====结果====name sex year city
0 张三 female 2001 北京
1 李四 female 2001 上海
2 王五 male 2003 广州
3 小明 male 2002 北京
# 3.嵌套字典创建
data2 = {'sex':{'张三':'female','李四':'female','王五':'male'},'city':{'张三':'北京','李四':'上海','王五':'广州'}
}
df2 = DataFrame(data2)
df2#====结果====sex city
张三 female 北京
李四 female 上海
王五 male 广州
#指定列索引顺序
df = DataFrame(data, columns=['name', 'sex', 'year', 'city'])
df
#====结果====
name sex year city
0 张三 female 2001 北京
1 李四 female 2001 上海
2 王五 male 2003 广州
3 小明 male 2002 北京
#指定行索引和列索引
df = DataFrame(data, columns=['name', 'sex', 'year', 'city'],index=['a', 'b', 'c', 'd'])
df
#====结果====name sex year city
a 张三 female 2001 北京
b 李四 female 2001 上海
c 王五 male 2003 广州
d 小明 male 2002 北京
df.index.name = 'id'
df.columns.name = 'std_info'df
#====结果====
std_info name sex year city
id
a 张三 female 2001 北京
b 李四 female 2001 上海
c 王五 male 2003 广州
d 小明 male 2002 北京
# 1.DataFrame的数据转换为二维数组
df.values
#====结果====
array([['张三', 'female', 2001, '北京'],['李四', 'female', 2001, '上海'],['王五', 'male', 2003, '广州'],['小明', 'male', 2002, '北京']], dtype=object)
# 2.DataFrame表的行索引、列索引
df.index
df.columns
#====结果====
Index(['a', 'b', 'c', 'd'], dtype='object')
Index(['name', 'sex', 'year', 'city'], dtype='object')
索引对象Index无法修改,但可以进行遍历
obj = Series([1, -2, 3, -4], index=['a', 'b', 'c', 'd'])
obj
#====结果====
a 1
b -2
c 3
d -4
dtype: int64# 1.索引对象不可以修改
index = obj.index
index[1] = 'f'
#====结果====
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-14-4f995da5e969> in <module>()1 index = obj.index
----> 2 index[1] = 'f'F:Anacondaenvsdata-analysislibsite-packagespandascoreindexesbase.py in __setitem__(self, key, value)1668 1669 def __setitem__(self, key, value):
-> 1670 raise TypeError("Index does not support mutable operations")1671 1672 def __getitem__(self, key):TypeError: Index does not support mutable operations
# 2.索引对象可以索引
index[1]
#====结果====
'b'
# 3.索引对象也是一个集合,因此也可以用in操作符
'sex' lumns
'f' in df.index
#====结果====
True
False
obj = Series([1, -2, 3, -4], index=['b', 'a', 'c', 'd'])# 1.重新索引就是重新排序,自动补齐
obj2 = index(['a', 'b', 'c', 'd', 'e'])#默认不填充
obj2#====结果====
a -2.0
b 1.0
c 3.0
d -4.0
e NaN
dtype: float64
obj = Series([1, -2, 3, -4], index=[0,2,3,5])
# 2.method参数指定缺失值填充方式
obj2 = index(range(6),method='ffill')#用前面的值填充
obj3 = index(range(6),method='bfill')#用后面的值填充
obj2
obj3#====结果====
0 1
1 1
2 -2
3 3
4 3
5 -4
dtype: int640 1
1 -2
2 -2
3 3
4 -4
5 -4
dtype: int64
#fill_value指定缺失值填充的值
df3 = index(columns=['name', 'year', 'id'], fill_value=0)
df3
#====结果====
#删去了sex属性,增添了year属性,填充为0name year id
a 0.0 0 1.0
b NaN 0 NaN
c 3.0 0 4.0
d 6.0 0 7.0
data = {'name':['张三', '李四', '王五', '小明'],'sex':['female', 'female', 'male', 'male'],'year':[2001, 2001, 2003, 2002],'city':['北京', '上海', '广州', '北京']
}
df = DataFrame(data)
df
#====结果====
name sex year city
0 张三 female 2001 北京
1 李四 female 2001 上海
2 王五 male 2003 广州
3 小明 male 2002 北京
df2 = df.set_index('name') #注意,不改变df
df2#====结果====sex year city
name
张三 female 2001 北京
李四 female 2001 上海
王五 male 2003 广州
小明 male 2002 北京
df3 = set_index() #也不改变df2
df3#====结果====
name sex year city
0 张三 female 2001 北京
1 李四 female 2001 上海
2 王五 male 2003 广州
3 小明 male 2002 北京
data = {'name':['张三', '李四', '王五', '小明'],'grade':[68, 78, 63, 92]
}
df = DataFrame(data)
df
#====结果====name grade
0 张三 68
1 李四 78
2 王五 63
3 小明 92# sort_value方法排序不改变原DataFrame,排序之后索引会改变,与Excel不同
df2 = df.sort_values(by='grade')
df2
#====结果====name grade
2 王五 63
0 张三 68
1 李四 78
3 小明 92
#reset_index之后,原来的列索引被添加为一列,用drop=True去除原索引
df3 = set_index()
df3#====结果====index grade name
0 2 63 王五
1 0 68 张三
2 1 78 李四
3 3 92 小明df4 = set_index(drop=True)
df4
#====结果====grade name
0 63 王五
1 68 张三
2 78 李四
3 92 小明
obj = Series([1, -2, 3, -4], index=['a', 'b', 'c', 'd'])
# 1.可以通过0~(n-1)索引
obj[1]
#====结果====
-2
# 2.也可以通过设置的索引标签来索引
obj['b']
obj[['a','c']]
#====结果====
-2
# 3.切片
obj[0:2]
obj['a':'c'] #利用索引标签索引时,尾端是被包含的
#====结果====
a 1
b -2
dtype: int64a 1
b -2
c 3
dtype: int64
data = {'name':['张三', '李四', '王五', '小明'],'sex':['female', 'female', 'male', 'male'],'year':[2001, 2001, 2003, 2002],'city':['北京', '上海', '广州', '北京']
}
df = DataFrame(data)
df
#====结果====name sex year city
0 张三 female 2001 北京
1 李四 female 2001 上海
2 王五 male 2003 广州
3 小明 male 2002 北京
# 1.取一列
df['city'] #以列索引标签形式,返回Series结构
df.city #以属性方式,,返回Series结构
df[['city']] #返回DataFrame结构#====结果====
0 北京
1 上海
2 广州
3 北京
Name: city, dtype: object0 北京
1 上海
2 广州
3 北京
Name: city, dtype: objectcity
0 北京
1 上海
2 广州
3 北京
df[['city','sex']]#====结果====city sex
0 北京 female
1 上海 female
2 广州 male
3 北京 male
直接选取列时不能使用切片,也没有位置
# df选取多列,不能使用切片!!
df[['sex':'city']]
# df['sex':'city']也不行#====结果====
File "<ipython-input-56-d6386b7eaceb>", line 1df[['sex':'city']]^
SyntaxError: invalid syntax
df[2] 会报错,应该使用 df[2:3] 或 df.iloc[2] 来取出第2行,返回Series结构。
以索引位置方式,注意,必须“切片”
#选取行,切片
df.iloc[:3]
#同等于df[:3]
#df[2]会报错,应该使用df[2:3]或df.iloc[2}来取出第2行#====结果====
name sex year city
0 张三 female 2001 北京
1 李四 female 2001 上海
2 王五 male 2003 广州
df2['李四':'小明'] #以行索引标签方式#====结果====sex year city
name
李四 female 2001 上海
王五 male 2003 广州
小明 male 2002 北京
df2
#====结果====sex year city
name
张三 female 2001 北京
李四 female 2001 上海
王五 male 2003 广州
小明 male 2002 北京
#按行索引标签选取数据。注意,不能使用df2['张三']
df2.loc['张三'] #====结果====(Series结构)
sex female
year 2001
city 北京
Name: 张三, dtype: object
df2.loc[['张三']] #两对[],里面的[]有“组合”的含义#====结果====(df结构)sex year city
name
张三 female 2001 北京
df2.loc[['张三','王五']] #“张三”和“王五”的组合#====结果====(df结构)sex year city
name
张三 female 2001 北京
王五 male 2003 广州
df2.loc[['张三':'王五']] #出错,不能用切片来“组合”
# 应该使用 df2.loc['张三':'王五'],包含尾端#====结果====File "<ipython-input-153-e34357cebaa9>", line 1df2.loc[['张三':'王五']] #出错,不能用切片来“组合”^
SyntaxError: invalid syntax
本文发布于:2024-01-29 04:47:34,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170647485912799.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |