Series 序列,是 Pandas 常用的数据结构之一,它是一种类似于一维数组的结构,由一组数据值(value)和一组标签组成,其中标签与数据值之间一一对应
#创建空Series
import pandas as pd
s=pd.Series()
print(s) #>>> Series([], dtype: float64)
import pandas as pd
import numpy as np
data=np.array(["a","b","c"])
s=pd.Series(data)
m = pd.Series(data,index=["s","ss","sss"])
#可以自定义index索引值
print(s) #>>> 0 a
# 1 b
# 2 c
# dtype: object
如果没有传入索引时会按照字典的键来构造索引;但是当传递了索引时需要将索引标签与字典中的值一一对应。当传递的索引值无法找到与其对应的值时,使用 NaN(非数字)填充。
data={"a":1,"b":2,"c":3}
s=pd.Series(data,index=["b","a","c"])
print(s) #>>> b 2
# a 1
# c 3
# dtype: int64
如果 data 是标量值,则必须提供索引
s=pd.Series(3,index=[1,3,5])
print(5) #>>> 1 3
# 3 3
# 5 3
# dtype: int64
print(a[0])
print(a[:3])
print(a[-2:]) #获取后两位
print(a["m","n"]) #通过index获取多位
#判断是否为空
print(s.empty) #>>> False
#输出维数
print(s.ndim)
#输出长度大小
print(s.size)
#以数组形式返回Series中数据
print(s.values)
#查看 Series 中索引的取值范围
print(s.index)
#返回前几行数据
print(s.head(3))
#返回后几行
如果为值不存在或者缺失,则返回 True
print(pd.isnull(aaa)) #有空值则返回True
#>>> 0 False
# 1 False
# 2 False
# 3 True
# dtype: bool
如果为值不存在或者缺失,则返回 False
表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型…
DataFrame 的每一行数据都可以看成一个 Series 结构,DataFrame 为这些行中每个数据值增加了一个列标签(columns)
#空DataFrame
import pandas as pd
pd.DataFrame()
#单一列表
data=[1,2,3,4,5]
s=pd.DataFrame(data)
print(s) #>>> 0
# 0 1
# 1 2
# 2 3
# 3 4
# 4 5
#嵌套列表
data=[["a",10],["b",23],["c",32]]
m=pd.DataFrame(data,columns=["name","age"])
print(m) #>>> name age
# 0 a 10
# 1 b 23
# 2 c 32
import pandas as pd
data = {"name":["Tom", "Jack", "Steve", "Ricky"],"age":[28,34,29,42]}
df = pd.DataFrame(data)
print(df)
#>>> age name
# 0 28 Tom
# 1 34 Jack
# 2 29 Steve
# 3 42 Ricky
key作为columns,value是这一列
已有columns,不可再定义;但是可以定义index (注意数量上对应)
df=pd.DataFrame(data,index=["first","second","third"])
#>>> name age
# first a 11
# second b 22
# third c 33
data=[{"one":"lim","two":"dsm"},{"one":"vds","two":"sd","three":"iu"}]
#>>> one two three
# first lim dsm NaN
# second vds sd iu
key作columns,几个字典则有几行,可定义index
如果其中某个元素值缺失,即字典的 key 无法找到对应的 value,将使用 NaN 代替
!!!如果有columns=[“one”],则根据索引只打出这一列,若有columns=[“oneone”]这种未存在的,则打出"NaN"
可以传递一个字典形式的 Series
import pandas as pd
s={"one":pd.Series((1,2),index=["first","second"]),
"two":pd.Series((3,4,7),index=["first","third","last"])}
df=pd.DataFrame[s]
print(df)
###>>> one two
# first 1.0 3.0
# last NaN 7.0
# second 2.0 NaN
# third NaN 4.0
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print(df ['one'])
df["three"]=pd.Series((1,2),index="a","b")
df["sum"]=df["one"]+df["three"]
df.insert(2,columns="sports",value=["soccer","run"])
”2“表示插入columns这列的索引位置
del df["first"]
df.pop("last")
s={"name":pd.Series(["mm","fn"],index=["one","two"]),"age":pd.Series(["dw","err","sda"],index=["two","three","four"])}
df=pd.DataFrame(s)
print(df) #>>>name age
# four NaN sda
# one mm NaN
# three NaN err
# two fn dw
print(df.loc["two"])
#>>>name fn
# age dw
# Name: two, dtype: object
loc()可以传递index和columns,以“,”隔开。来锁定特定一个元素
print(df.iloc[0]
[]里是行数索引如0,1,2…不是index名字
print(df[1:3])
左闭右开
df3=pd.DataFrame([[3,4],[1,2]],columns=["name","age"])
在行末追加数据行
df=df.drop(1)
默认axis=0或者使用sum(“index”),可以加字符
axis=0 行,按垂直方向进行计算 ; axis=1 列,按水平方向进行计算
可以加字符
axis=0 行, 按垂直方向进行计算 ; axis=1 列,按水平方向进行计算
也可提供include可筛选字符列、数字列信息
相关参数:object 对字符列统计;number 对数字列统计;all 汇总所有列
print(df.describe(include=["object"]))
从 CSV 文件中读取数据,并创建 DataFrame 对象
import pandas as pd
df=pd.read_csv("C:/Users/Administrator/Desk/personal.csv",index_col=['name'])
print(df)
df=pd.read_csv("C:/Users/Administrator/Deskt/personal.csv",skiprows=4)
### skiprows=4的4是行数,不是索引为5的行
file="xxx.xlsx"
df=pd.read_excel(file,sheet_name="sheet2")
df2=pd.read_excel(file,sheet_name=[0,2,"sheet1"])
#返回第一、三张、及名为“sheet”的工作表
sheet_name:指定工作表名,默认第一个。返回DataFrame类型数据
df2=pd.read_excel(file,sheet_name="sheet1",header=1)
指定第二行为标题行。header默认第一行。
如果数据已经有列名了,则替换掉原有的列名
df3=pd.read_excel(file,header=None,names=list("abcde"))
#如果只想使用names,且对源数据不做任何修改,可以指定header=None。因为header默认第一行
df4=pd.read_excel(file,sheet_name="sheet1",index_col=0)
#指定col=0的列为索引,即第一列数据作为索引
df= pd.read_excel(file,sheet_name='Sheet1', skiprows=0)
将 DataFrame 转换为 CSV 数据
如果想要把 CSV 数据写入文件,需向函数传递一个文件路径
de=pd.DataFrame(data)
csv_data=de.to_csv("C:/Users/Administrator/Deskt/personal.csv")