Pandas에서 DataFrame의 기본 작업

DataFrame은 [Tableular] 데이터 구조로 [Series]로 구성된 사전이라 할 수 있습니다.
DataFrame은 특정 순서로 정렬된 여러 데이터 열로 구성됩니다.
디자인의 원래 의도는 Serise의 사용 시나리오를 1차원에서 다차원으로 확장하는 것입니다.
DataFrame에는 행 인덱스와 열 인덱스가 모두 있습니다.

행 인덱스: 인덱스
열 인덱스: 열
값: values(numpy 2차원 배열)

1. 만들기

가장 일반적인 방법은 생성할 사전을 전달하는 것입니다. 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)

 

 3. 읽기

# 读取数据,读取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)

출력은 다음과 같습니다.

 4. 색인

먼저 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

5. 슬라이싱

라인 컷:

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

출력은 다음과 같습니다.

 기둥 절단:

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

출력은 다음과 같습니다.

 

Supongo que te gusta

Origin blog.csdn.net/m0_51864191/article/details/128140042
Recomendado
Clasificación