pandas是基于NumPy数组构建的,使数据预处理、清洗、分析工作变得更快更简单。pandas是专门为处理表格和混杂数据设计的,而NumPy更适合处理统一的数值数组数据。
pandas有两个主要数据结构:Series和DataFrame。
Series:Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的
DataFrame
列表转换为数据框
第一种:两个不同列表转换成为数据框
from pandas.core.frame import DataFrame
a=[1,2,3,4]#列表a
b=[5,6,7,8]#列表b
c={"小红" : a,
"小蓝" : b}#将列表a,b转换成字典 ,key可以自定义命名
data=DataFrame(c)#将字典转换成为数据框,默认按列写入
print(data)
输出结果
小红 小蓝
0 1 5
1 2 6
2 3 7
3 4 8
###名称修改
data.rename(columns={'小红':'a','小蓝':'b'},inplace=True)
###inplace 就原数据框修改
print(data)
a b
0 1 5
1 2 6
2 3 7
3 4 8
###数据框转置
data=data.T# 按行写入
print(data)
0 1 2 3
a 1 2 3 4
b 5 6 7 8
第二种:将包含不同子列表的列表转换为数据框(默认按行写入)
data=[[1,2,'fff',4],[5,6,'b',8],[7,8,'fff',18],[3,7,'c','6'],[10,20,'d',99],[3,8,'fff',99]]
print(data)
0 1 2 3
0 1 2 fff 4
1 5 6 b 8
2 7 8 fff 18
3 3 7 c 6
4 10 20 d 99
5 3 8 fff 99
数据框筛选
data=[[1,2,'fff',4],[5,6,'b',8],[7,8,'fff',18],[3,7,'c','6'],[10,20,'d',99],[3,8,'fff',99]]
df = DataFrame(data)
print(df)
0 1 2 3
0 1 2 fff 4
1 5 6 b 8
2 7 8 fff 18
3 3 7 c 6
4 10 20 d 99
5 3 8 fff 99
df.rename(columns={0:'a',1:'b',2:'c',3:'d'},inplace=True)
print(df)
a b c d
0 1 2 fff 4
1 5 6 b 8
2 7 8 fff 18
3 3 7 c 6
4 10 20 d 99
5 3 8 fff 99
######################筛选列
df['c'] ###选取c列
0 fff
1 b
2 fff
3 c
4 d
5 fff
df['c'] =='fff' ##查看c列等于'fff'的行
0 True
1 False
2 True
3 False
4 False
5 True
df[df['c'] =='fff' ] ##选取c列等于‘fff’的行
a b c d
0 1 2 fff 4
2 7 8 fff 18
5 3 8 fff 99
#################筛选行
第一种 : loc (按标签选取),标签可自定义设置
df.loc[2] ###选取第二行,返回series
a 7
b 8
c fff
d 18
Name: 2, dtype: object
df.loc[2:5,'a'] ###选取2-5行的第a列,左闭右闭,
第二种:iloc(根据行号,索引数)
df.iloc[3:5] 左闭右开
a b c d
3 3 7 c 6
4 10 20 d 99
排序
data=[[1,2,'fff',4],[5,6,'b',8],[7,8,'fff',18],[3,7,'c','6'],[10,20,'d',99],[3,8,'fff',99]]
df=DataFrame(data)
df.rename(columns={0:'a',1:'b',2:'c',3:'d'},inplace=True)
a b c d
0 1 2 fff 4
1 5 6 b 8
2 7 8 fff 18
3 3 7 c 6
4 10 20 d 99
5 3 8 fff 99
aa =df.sort_values(by="a" , ascending=True)
##以a列进行排序,默认上序
a b c d
0 1 2 fff 4
3 3 7 c 6
5 3 8 fff 99
1 5 6 b 8
2 7 8 fff 18
4 10 20 d 99
df["c"] = df["c"].astype("float") ###将c列转化为float型
dataframe拼接合并
第一种:result = df1.append(df2,ignore_index=True)
第二种 :https://www.cnblogs.com/guxh/p/9451532.html
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)
默认值:axis=0
axis=0:竖方向(index)合并,合并方向index作列表相加,非合并方向columns取并集
axis=1:横方向(columns)合并,合并方向columns作列表相加,非合并方向index取并集