pandas新建一个dataframe
简介
在数据处理和分析中,pandas是python中一个非常常用的库。它提供了强大的数据结构和数据分析工具,其中最基本且最常用的数据结构是DataFrame。DataFrame是一个二维的数据结构,可以存储和操作不同数据类型的列。本文将详细介绍如何使用pandas创建一个新的DataFrame,并介绍一些常用的DataFrame操作。
安装pandas
在使用pandas之前,首先需要安装这个库。可以使用pip或conda来安装pandas,下面是使用pip安装pandas的示例代码:
pip install pandas
导入pandas库
在开始之前,需要导入pandas库。一般约定俗成的导入方式是使用import pandas as pd
,将pandas库导入,并使用pd
作为别名进行引用。下面是一个导入pandas库的示例代码:
import pandas as pd
创建一个空的DataFrame
创建一个空的DataFrame是创建DataFrame的基础步骤,可以使用pd.DataFrame()
函数来创建一个空的DataFrame。下面是一个创建空DataFrame的示例代码:
import pandas as pd
df = pd.DataFrame()
print(df)
运行以上代码,输出为:
Empty DataFrame
Columns: []
Index: []
可以看到,创建了一个空的DataFrame,没有任何列或行。
创建一个有数据的DataFrame
创建一个有数据的DataFrame是使用pandas最常见的操作之一。在创建一个有数据的DataFrame时,可以通过传递一个字典、一个列表或一个numpy数组来创建DataFrame。下面将分别介绍这三种方法。
通过传递字典创建DataFrame
可以通过传递一个字典来创建DataFrame。字典的键将成为DataFrame的列名,而对应的值将成为DataFrame的列数据。以下是通过字典创建DataFrame的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
print(df)
运行以上代码,输出为:
姓名 年龄 性别
0 张三 25 男
1 李四 30 男
2 王五 35 女
可以看到,通过字典创建了一个DataFrame,并指定了三个列名为’姓名’、’年龄’和’性别’。字典的值对应为DataFrame的列数据。
通过传递列表创建DataFrame
除了通过字典创建DataFrame外,还可以通过传递一个列表来创建DataFrame。列表中的每个元素将成为DataFrame的一列数据。以下是通过列表创建DataFrame的示例代码:
import pandas as pd
data = [['张三', 25, '男'],
['李四', 30, '男'],
['王五', 35, '女']]
df = pd.DataFrame(data, columns=['姓名', '年龄', '性别'])
print(df)
运行以上代码,输出为:
姓名 年龄 性别
0 张三 25 男
1 李四 30 男
2 王五 35 女
可以看到,通过列表创建了一个DataFrame,并指定了三个列名为’姓名’、’年龄’和’性别’。列表中的每个元素对应为DataFrame的一列数据。
通过传递numpy数组创建DataFrame
另一种创建DataFrame的方法是通过传递一个numpy数组。numpy数组类似于列表,列表中的每个元素将成为DataFrame的一列数据。以下是通过numpy数组创建DataFrame的示例代码:
import pandas as pd
import numpy as np
data = np.array([['张三', 25, '男'],
['李四', 30, '男'],
['王五', 35, '女']])
df = pd.DataFrame(data, columns=['姓名', '年龄', '性别'])
print(df)
运行以上代码,输出为:
姓名 年龄 性别
0 张三 25 男
1 李四 30 男
2 王五 35 女
可以看到,通过numpy数组创建了一个DataFrame,并指定了三个列名为’姓名’、’年龄’和’性别’。numpy数组中的每个元素对应为DataFrame的一列数据。
操作DataFrame的属性和方法
pandas的DataFrame提供了许多属性和方法,用于操作和处理数据。下面将介绍一些常用的属性和方法。
查看DataFrame的形状
可以使用.shape
属性查看DataFrame的形状,即行数和列数。以下是查看DataFrame形状的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
print(df.shape)
运行以上代码,输出为:
(3, 3)
可以看到,DataFrame的形状为3行3列。
查看DataFrame的列名
可以使用.columns
属性查看DataFrame的列名。以下是查看DataFrame列名的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
print(df.columns)
运行以上代码,输出为:
Index(['姓名', '年龄', '性别'], dtype='object')
可以看到,DataFrame的列名为’姓名’、’年龄’和’性别’。
查看DataFrame的索引
可以使用.index
属性查看DataFrame的索引。以下是查看DataFrame索引的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
print(df.index)
运行以上代码,输出为:
RangeIndex(start=0, stop=3, step=1)
可以看到,DataFrame的索引为0、1、2。
查看DataFrame的数据类型
可以使用.dtypes
属性查看DataFrame的每列数据的数据类型。以下是查看DataFrame数据类型的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
print(df.dtypes)
运行以上代码,输出为:
姓名 object
年龄 int64
性别 object
dtype: object
可以看到,DataFrame中的’姓名’和’性别’列的数据类型为object(字符串),而’年龄’列的数据类型为int64。
查看DataFrame的前几行数据
可以使用.head()
方法查看DataFrame的前几行数据,默认情况下,.head()
方法会返回前5行数据。以下是查看DataFrame前几行数据的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五', '赵六', '钱七'],
'年龄': [25, 30, 35, 40, 45],
'性别': ['男', '男', '女', '男', '女']}
df = pd.DataFrame(data)
print(df.head())
运行以上代码,输出为:
姓名 年龄 性别
0 张三 25 男
1 李四 30 男
2 王五 35 女
3 赵六 40 男
4 钱七 45 女
可以看到,默认情况下,查看DataFrame的前5行数据。
查看DataFrame的后几行数据
与查看前几行数据类似,可以使用.tail()
方法查看DataFrame的后几行数据,默认情况下,.tail()
方法会返回后5行数据。以下是查看DataFrame后几行数据的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五', '赵六', '钱七'],
'年龄': [25, 30, 35, 40, 45],
'性别': ['男', '男', '女', '男', '女']}
df = pd.DataFrame(data)
print(df.tail())
运行以上代码,输出为:
姓名 年龄 性别
0 张三 25 男
1 李四 30 男
2 王五 35 女
3 赵六 40 男
4 钱七 45 女
可以看到,默认情况下,查看DataFrame的后5行数据。
访问DataFrame的列
可以通过列名来访问DataFrame的某一列。以下是访问DataFrame列的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
print(df['姓名'])
运行以上代码,输出为:
0 张三
1 李四
2 王五
Name: 姓名, dtype: object
可以看到,通过列名’姓名’来访问DataFrame的这一列。
访问DataFrame的多列
可以通过传递包含多个列名的列表来访问DataFrame的多列。以下是访问DataFrame多列的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
print(df[['姓名', '性别']])
运行以上代码,输出为:
姓名 性别
0 张三 男
1 李四 男
2 王五 女
可以看到,通过传递包含列名的列表来访问DataFrame的这两列。
访问DataFrame的特定行
可以使用.loc
属性来访问DataFrame的特定行。以下是访问DataFrame特定行的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
print(df.loc[0])
运行以上代码,输出为:
姓名 张三
年龄 25
性别 男
Name: 0, dtype: object
可以看到,通过.loc
属性来访问DataFrame的第一行数据。
访问DataFrame的特定行和列
可以使用.loc
属性来访问DataFrame的特定行和列。以下是访问DataFrame特定行和列的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
print(df.loc[0, '姓名'])
运行以上代码,输出为:
张三
可以看到,通过.loc
属性来访问DataFrame的第一行第一列的数据。
过滤DataFrame的行
可以使用布尔条件来过滤DataFrame的行。以下是过滤DataFrame行的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
filtered_df = df[df['年龄'] >= 30]
print(filtered_df)
运行以上代码,输出为:
姓名 年龄 性别
1 李四 30 男
2 王五 35 女
可以看到,通过布尔条件df['年龄'] >= 30
过滤DataFrame的行数据。
添加新列到DataFrame
可以使用赋值符号=
将新列添加到DataFrame。以下是添加新列到DataFrame的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
df['工资'] = [5000, 6000, 7000]
print(df)
运行以上代码,输出为:
姓名 年龄 性别 工资
0 张三 25 男 5000
1 李四 30 男 6000
2 王五 35 女 7000
可以看到,通过赋值符号=
将名为’工资’的新列添加到DataFrame。
删除DataFrame的列
可以使用del
关键字来删除DataFrame的列。以下是删除DataFrame列的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
del df['性别']
print(df)
运行以上代码,输出为:
姓名 年龄
0 张三 25
1 李四 30
2 王五 35
可以看到,通过del
关键字删除DataFrame的’性别’列。
更新DataFrame的值
可以使用赋值符号=
来更新DataFrame中的特定值。以下是更新DataFrame的值的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
df.loc[0, '姓名'] = '赵六'
print(df)
运行以上代码,输出为:
姓名 年龄 性别
0 赵六 25 男
1 李四 30 男
2 王五 35 女
可以看到,通过赋值符号=
来更新DataFrame中第一行’姓名’列的值。
重命名DataFrame的列
可以使用.rename()
方法来重命名DataFrame的列。以下是重命名DataFrame列的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
df = df.rename(columns={'姓名': 'Name', '年龄': 'Age', '性别': 'Gender'})
print(df)
运行以上代码,输出为:
Name Age Gender
0 张三 25 男
1 李四 30 男
2 王五 35 女
可以看到,通过.rename()
方法将DataFrame的列’姓名’、’年龄’、’性别’重命名为’Name’、’Age’、’Gender’。
排序DataFrame
可以使用.sort_values()
方法对DataFrame进行排序。以下是排序DataFrame的示例代码:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'性别': ['男', '男', '女']}
df = pd.DataFrame(data)
df = df.sort_values(by='年龄', ascending=False)
print(df)
运行以上代码,输出为:
姓名 年龄 性别
2 王五 35 女
1 李四 30 男
0 张三 25 男
可以看到,通过.sort_values()
方法按照’年龄’列对DataFrame进行降序排序。