1,导包
from numpy.lib.shape_base import column_stack
import pandas as pd
import numpy as np
一:数据结构
1,序列Series
pd.Series(data,index,dtype,copy):
data:数据,可以是序列类型,可以是int
index:索引值必须是唯一的,与data的长度相同,默认为np.arange(n)
dtype:数据类型
copy:是否复制数据,默认为false
打印最左侧为索引,右侧为数据
2,数据解析
axes 返回Series索引列表
dtype 返回Series的数据类型
empty 判断Series是否为空,如果为空,则返回True
ndim 返回基础的维度数,默认为:1
size 返回基础中的元素个数
values 将Series作为ndarray返回
head() 返回前n行
tail() 返回最后n行
3,序列DataFrame
pandas.DataFrame(data,index,columns,dtype,copy)
data 支持多种数据类型。
如:ndarray, series, map, lists, dict, constant和另一个DataFrame
index 行标签,如果没有传递索引值,默认值为0,1,2,3,4,
column5 列标签,如果没有传递索引值,默认值为0,1,2,3,4,,,,
dtype 每列数据类型
copy 是否复制数据,默认值为False
4,字典
字典 = {k:v}
k:在Series中是index
d1 = {“zs”:18,“ls”:20}
s3 = pd.Series(d1)
print(s3)
print(s3[“zs”])
a = [18,20]
s4 = pd.Series(a,index=[“zs”,“ls”])
“”"
zs 18
ls 20
dtype: int64
18
5,语法:s1[index] 获取单个数据
可以使用默认索引,也可以使用自定义索引
d1 = {“zs”:20,“ls”:30,“ww”:40,“ch”:20,“zl”:30}
s1 = pd.Series(d1)
print(d1[“zs”]) #使用自定义索引 20
print(s1[0]) #使用默认索引 20
6,语法
s1[list] 获取索引中的数据
s1[index1:index2] 获取从第一个索引到第二个索引的数据,左开右闭
数字索引是左开右闭,标签索引是左开右开
print(s1[0:3]) #左开右闭
7,索引/切片
head(n)返回前n行(观察索引值),默认数量5,可以传递自定义数值
tail(n)返回最后n行(观察索引值),默认数值为5,可以传递自定义数值
“”"
“”"
print(s1.axes)
print(s1.dtype)
print(s1.empty)
print(s1.ndim)
print(s1.size)
print(s1.values)
print(s1.head(3))
print(s1.tail(3))
“”"
8.利用双层list
x = [
[‘zs’,20],
[‘ls’,30],
[‘ch’,40]
]
df2 = pd.DataFrame(x,columns=[‘name’,‘age’])
print(df2)
‘’’
name age
0 zs 20
1 ls 30
2 ch 40
‘’’
9.利用数据是字典的列表创建
‘’’
1.k变成列标签
2.没有数据的用NaN
‘’’
x = [
{‘a’:1,‘b’:2},
{‘a’:10,‘b’:20,‘c’:30}]
#index 行索引 columns列索引
df3 = pd.DataFrame(x)
print(df3)
10;利用字典创建DataFrame
a,b是列索引,一定要设置行索引(index),否则报错
11,查寻
df[columns_label] 查询单列
df[[columns_label]] 查询多列
查询出一列会进行降维DataFrame----->>Series
12,添加列
语法:df[columns]=数据
切记数据要是同类型的数据,
df1[columns]=df1[columns]+df1[columns]
13,删除语法
del df[columns] 根据下标进行检索删除,没有返回值
df.pop(columns)根据下标进行检索删除,并返回删除的那一列
14,自定义查寻
loc[自定义索引(标签索引)]
iloc[默认索引(数字索引)]
语法:
loc[index] 查询一行数据
扩展
loc[index,columns] 精确到行和列,那就是一个数据
查询多行和多列(精确到第几行和第几列)
loc[[index1,index2,…],[columns1,columns12,…]]
查询多行和多列(第几行到第几行,第几列到第几列)
不是左开右闭
loc[index1:index2,columns1,columns2]
使用布尔索引也可以查询多行多列
loc[行_布尔索引,列_布尔索引]
16,查询行的,iloc[数字索引]
语法:
iloc[num_index] 根据索引位置获取行
iloc[num_index1:num_index2] 第几行到第几行,左开右闭
iloc[[num_index1,num_index2,…]] 第几行和第几行
iloc[num_index,num_columns] #第几行的第几列
iloc[num_index,[num_columns1,num_columns2,…]] 第几行,第几列和第几列
iloc[num_index,[num_columns1:num_columns2]] 第几行,第几列到第几列,左开右闭
iloc[[num_index1,num_index2,…],[num_columns1,num_columns2,…]]
iloc[num_index1:num_index2,[num_columns1:num_columns2]]
“”"
print("-----------------------------------")
#print(df3.iloc[0])
#print(df3.iloc[0:4])
#print(df3.iloc[[0,3]])
#print(df3.iloc[6,0])
#print(df3.iloc[6,0:2])
#print(df3.iloc[6,[0,2]])
#print(df3.iloc[[0,2,4],[0,2]])
“”"
df[num_index1:num_index2] 第几行到第几行,左开右闭—切片
df[label_index1:label_index2] 第几行到第几行,左开右开
“”"
df3[0:4]#第一行到第五行,但是第五行取不到
df3[‘row1’:‘row4’] #第一行到第四行,第四行能取到
17,在末未追加一行,返回一个新对象
df.append(other,ignore_index= False,verify_integrty = False,
sort = False)
other: 要附加的数据,DataFrame或者Series等类型
ignore_index:如果是True,则不使用索引标签,默认false
verify_integrity:如果是True,在创建于重复项的索引时,引发valueError,
默认时false
sort;如果原数据和添加数据的列没有对齐,则对列进行排序,不建议排序