Pandas中DataFrame的基础操作

DataFrame是一个【表格型】的数据结构,可以看做是由【Series组成的字典】
DataFrame由按一定顺序排列的多列数据组成。
设计初衷是将Serise的使用场景从一维拓展到多维。
DataFrame既有行索引,也有列索引。

行索引:index
列索引:columns
值:values(numpy的二维数组)

一、创建

最常用的方法是传递一个字典来创建。DataFrame以字典的键作为每一【列】的名称,以字典的值(一个数组)作为每一列。此外,DataFrame会自动加上每一行的索引(和Series一样)。同Series一样,若传入的列与字典的键不匹配,则相应的值为NaN。
df = DataFrame(data={"python": np.random.randint(0, 150, size=5),
                     "math": np.random.randint(0, 150, size=5),
                     "en": np.random.randint(0, 150, size=5)},
               index=list("ABCDE"))
print(df)

df2 = DataFrame(data=np.random.randint(0, 150, size=(10, 4)),
                index=list("ABCDEFGHIJ"),
                columns=["Python", "Math", "En", "Chi"])
print(df2)

输出结果如下:

 二、保存

df2.to_csv("df2_data.txt")
df2.to_excel("df2_data.xlsx")

# 读取数据,读取txt文件
df3 = pd.read_csv("df2_data.txt")
# 把读取的unnamed = 0改名为Index,因为改的是列索引,所以axis=1
df4 = df3.rename(mapper={"Unnamed: 0": "Index"}, axis=1)
print(df3)
# 直接打印输出df3不变,为什么?需要用df4去接收
print(df4)

 

 三、读取

# 读取数据,读取txt文件
df3 = pd.read_csv("df2_data.txt")
# 把读取的unnamed = 0改名为Index,因为改的是列索引,所以axis=1
df4 = df3.rename(mapper={"Unnamed: 0": "Index"}, axis=1)
print(df3)
# 直接打印输出df3不变,需要用df4去接收
print(df4)

输出结果如下:

 

# 读取数据,读取excel文件
df5 = pd.read_excel("df2_data.xlsx")
print(df5)

输出结果如下:

 四、索引

首先创建一个DataFrame。

df2 = DataFrame(data=np.random.randint(0, 150, size=(10, 4)),
                index=list("ABCDEFGHIJ"),
                columns=["Python", "Math", "En", "Chi"])

列索引: 

# 获取某一列,该列就是一个Series,可以通过属性方式获取
print(df2.Python)
print(df2[["Math", "En"]])

输出结果如下:

 

 行索引:

# 获取某一行,只能使用loc和iloc
print(df2.loc[["A", "B"]])
print(df2.iloc[[3, 5]])

输出结果如下:

 

 元素索引:

# 对于元素的索引
# 先找列,再找行可以直接使用中括号,反过来不行
print(df2["Math"]["C"])
# 先找行,再找列,要使用loc,永远都是先找行,再找列即df.loc["index","column"]
print(df2.loc["C"]["Math"])
print(df2.loc["C", "Math"])

输出结果都为:134

五、切片

行切:

# 直接使用中括号切片不能对列切片,只能对行切,即拦腰斩断
print(df2['A':'B'])
print(df2.loc['A':'B'])
print(df2.iloc[0:2])

输出结果如下:

 列切:

# 列切,只能用这种方式
print(df2.iloc[:, 0:2])

输出结果如下:

猜你喜欢

转载自blog.csdn.net/m0_51864191/article/details/128140042