📜  数据框 - Python (1)

📅  最后修改于: 2023-12-03 15:39:59.487000             🧑  作者: Mango

数据框 - Python

数据框是Python中常用的数据结构,主要用于表格数据的存储、操作和分析。Python中的数据框可以使用多种库进行创建和操作,比如pandas、numpy等。在本篇文章中,我们将主要介绍使用pandas库创建和操作数据框。

创建数据框

在pandas中,我们可以使用DataFrame()函数创建数据框,该函数的常用参数如下:

  • data:数据,可以是二维数组、字典、列表、元组或者Series等。
  • columns:列名,如果没有指定则会根据数据的类型自动生成列名。
  • index:行索引,如果没有指定则会自动生成行索引。
  • dtype:指定每一列的数据类型。
  • copy:是否复制数据。

以下是一个简单的例子:

import pandas as pd

# 从二维数组创建数据框
data = {'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}
df1 = pd.DataFrame(data)

# 从列表创建数据框
data = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
df2 = pd.DataFrame(data, columns=['a', 'b', 'c'])

# 从字典创建数据框
data = {'a': pd.Series([1, 2, 3]), 'b': pd.Series([4, 5, 6]), 'c': pd.Series([7, 8, 9])}
df3 = pd.DataFrame(data)
数据框的属性和方法
属性
  • shape:返回数据框的形状(行数,列数)。
  • columns:返回数据框的列名。
  • index:返回数据框的行索引。
  • dtypes:返回每一列的数据类型。

以下是一个简单的例子:

import pandas as pd

data = {'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}
df = pd.DataFrame(data)

print(df.shape)     # (3, 3)
print(df.columns)   # Index(['a', 'b', 'c'], dtype='object')
print(df.index)     # RangeIndex(start=0, stop=3, step=1)
print(df.dtypes)    # a    int64
                    # b    int64
                    # c    int64
                    # dtype: object
方法
  • head(n):返回前n行数据。
  • tail(n):返回后n行数据。
  • info():返回数据框的基本信息。
  • describe():返回数据框的描述性统计信息,包括均值、标准差、最大值、最小值、中位数等。
  • corr():返回各列之间的相关系数。
  • groupby():按照某一列进行分组。
  • pivot():将数据框进行透视。
  • join():合并两个数据框。
  • merge():与join()方法相似,可以指定合并的列。

以下是一个简单的例子:

import pandas as pd

data = {'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}
df = pd.DataFrame(data)

print(df.head(2))   #    a  b  c
                    # 0  1  4  7
                    # 1  2  5  8

print(df.tail(2))   #    a  b  c
                    # 1  2  5  8
                    # 2  3  6  9

print(df.info())    # <class 'pandas.core.frame.DataFrame'>
                    # RangeIndex: 3 entries, 0 to 2
                    # Data columns (total 3 columns):
                    #  #   Column  Non-Null Count  Dtype
                    # ---  ------  --------------  -----
                    #  0   a       3 non-null      int64
                    #  1   b       3 non-null      int64
                    #  2   c       3 non-null      int64
                    # dtypes: int64(3)
                    # memory usage: 200.0 bytes
                    # None

print(df.describe())#          a    b    c
                    # count  3.0  3.0  3.0
                    # mean   2.0  5.0  8.0
                    # std    1.0  1.0  1.0
                    # min    1.0  4.0  7.0
                    # 25%    1.5  4.5  7.5
                    # 50%    2.0  5.0  8.0
                    # 75%    2.5  5.5  8.5
                    # max    3.0  6.0  9.0

print(df.corr())   #     a    b    c
                    # a  1.0  1.0  1.0
                    # b  1.0  1.0  1.0
                    # c  1.0  1.0  1.0

grouped = df.groupby('a')
for name, group in grouped:
    print(name)
    print(group)

# 1
#    a  b  c
# 0  1  4  7
# 2  1  6  9

# 2
#    a  b  c
# 1  2  5  8

# 3
#    a  b  c
# 2  3  6  9

print(df.pivot(index='a', columns='b', values='c'))

# b  4  5  6
# a
# 1  7  NaN  9
# 2 NaN  8  NaN
# 3 NaN NaN  9

df1 = pd.DataFrame({'key': ['a', 'b', 'c'], 'value': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['a', 'b', 'd'], 'value': [4, 5, 6]})
print(pd.merge(df1, df2, on='key', how='left'))

# key  value_x  value_y
# 0   a        1      4.0
# 1   b        2      5.0
# 2   c        3      NaN
数据框的索引和选择

在数据框中,我们可以使用.loc[]、.iloc[]、[]等方法对数据进行选择和索引。

  • .loc[]方法:通过行和列的标签进行选择,比如.loc[[0,1,2], ['a','c']]。
  • .iloc[]方法:通过行和列的位置进行选择,比如.iloc[[0,1,2], [0,2]]。
  • []方法:可以用于选择单列或者多列,比如df['a']或df[['a','c']]。

以下是一个简单的例子:

import pandas as pd

data = {'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}
df = pd.DataFrame(data)

print(df.loc[0, 'a'])        # 1
print(df.loc[[0, 2], 'b'])   # 0    4
                             # 2    6
                             # Name: b, dtype: int64
print(df.iloc[0, 1])         # 4
print(df.iloc[[0, 2], [0, 2]])#    a  c
                             # 0  1  7
                             # 2  3  9
print(df['a'])               # 0    1
                             # 1    2
                             # 2    3
                             # Name: a, dtype: int64
print(df[['a', 'c']])        #    a  c
                             # 0  1  7
                             # 1  2  8
                             # 2  3  9
数据框的修改

数据框的修改主要包括添加、删除、修改操作,我们可以使用.loc[]、.iloc[]等方法实现。

以下是一个简单的例子:

import pandas as pd

data = {'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}
df = pd.DataFrame(data)

# 添加一列数据
df['d'] = [0, 1, 2]

# 删除一列数据
df = df.drop('d', axis=1)

# 修改一列数据
df.loc[0, 'b'] = 10
数据框的合并

数据框的合并主要包括按列、按行或者自定义合并方法,我们可以使用concat()、merge()等方法实现。

以下是一个简单的例子:

import pandas as pd

data1 = {'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}
data2 = {'d': [10, 11, 12], 'e': [13, 14, 15], 'f': [16, 17, 18]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 按列合并数据框
df3 = pd.concat([df1, df2], axis=1)

# 按行合并数据框
df4 = pd.concat([df1, df2], axis=0)

# 自定义合并方法
df5 = pd.merge(df1, df2, left_on='a', right_on='d', how='outer')

以上就是Python中数据框的介绍,希望对大家有所帮助。