DataFrame是一個表格型的資料結構,可以看成就是excel中的表格。
官方文件:https://pandas.pydata.org/docs/reference/frame.html
DataFrame的建立
DataFrame構造方法如下:
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
- data:DataFrame的資料部分,可以是字典、二維陣列、Series、DataFrame或其他可轉換為DataFrame的物件,若不提供此引數,則建立一個空的DataFrame。
- index:DataFrame的行索引,用於標識每行資料,可以是列表、陣列、索引物件等,若不提供此引數,則建立一個預設的整數索引。
- columns:DataFrame的列索引,用於標識每列資料。可以是列表、陣列、索引物件等,若不提供此引數,則建立預設的整數索引。
- dtype:指定DataFrame的資料型別,可以是NumPy的資料型別,例如np.int64、np.float64等,若不提供此引數,則根據資料自動推斷資料型別。
- copy:是否複製資料,預設為False,表示不復制資料,若設定為True,則複製輸入的資料。
一維列表建立DataFrame
|
二維列表建立DataFrame
|
傳遞字典建立DataFrame
|
傳遞字典列表建立DataFrame
|
透過Series物件建立
|
透過Numpy建立
|
DataFrame的屬性
dataframe.T
df.T屬性主要用來轉置行和列,和 df.transpose() 實現的效果一樣。
|
dataframe.axes
返回包含行索引和列索引的列表,可以透過 df.axes[0].tolist()
或 list(df.axes[0])
轉成行索引列表,列索引列表同理。
import pandas as pd
import numpy as np
a = np.random.randint(1, 10, (3, 2))
# 基於a陣列建立DataFrame
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.axes) # [Index(['a', 'b', 'c'], dtype='object'), Index(['foo', 'bar'], dtype='object')]
print(df.axes[0].tolist()) # ['a', 'b', 'c']
print(list(df.axes[0])) # ['a', 'b', 'c']
dataframe.dtypes
檢視每列的資料型別。
|
dataframe.ndim
獲取DataFrame的維數。
import pandas as pd
import numpy as np
a = np.random.randint(1, 10, (3, 2))
# 基於a陣列建立DataFrame
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.ndim) # 2
dataframe.shape
獲取DataFrame的行數和列數,是一個元組。
import pandas as pd
import numpy as np
a = np.random.randint(1, 10, (3, 2))
# 基於a陣列建立DataFrame
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.shape) # (3, 2)
dataframe.size
返回DataFrame中的元素個數。
import pandas as pd
import numpy as np
a = np.random.randint(1, 10, (3, 2))
# 基於a陣列建立DataFrame
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.size) # 6
dataframe.values
返回一個所有行資料組成的二維的陣列,每個元素是一個一維陣列(也就是一行資料),可以透過 list(df.values)
或 df.values.tolist()
轉成python的列表型別。
import pandas as pd
import numpy as np
a = np.random.randint(1, 10, (3, 2))
# 基於a陣列建立DataFrame
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.values) # [[8 6] [3 3] [8 7]]
print(list(df.values)) # [array([8, 6], dtype=int32), array([3, 3], dtype=int32), array([8, 7], dtype=int32)]
print(df.values.tolist()) # [[8, 6], [3, 3], [8, 7]]
dataframe.index
獲取行索引,返回的是Index型別,可以透過 list(df.index)
或 df.index.tolist()
轉換成列表。
import pandas as pd
import numpy as np
a = np.random.randint(1, 10, (3, 2))
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.index) # Index(['a', 'b', 'c'], dtype='object')
print(df.index.values) # ['a' 'b' 'c']
print(list(df.index)) # ['a', 'b', 'c']
print(df.index.tolist()) # ['a', 'b', 'c']
dataframe.columns
獲取列索引,返回的是Index型別,可以透過 list(df.columns)
或 df.columns.tolist()
轉換成列表。
import pandas as pd
import numpy as np
a = np.random.randint(1, 10, (3, 2))
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.columns) # Index(['foo', 'bar'], dtype='object')
print(df.columns.values) # ['foo' 'bar'],可用 df.columns.values.tolist() 轉換成列表
print(list(df.columns)) # ['foo', 'bar']
print(df.columns.tolist()) # ['foo', 'bar']