问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Pandas DataFrame入门指南:创建、查询与操作

创作时间:
作者:
@小白创作中心

Pandas DataFrame入门指南:创建、查询与操作

引用
1
来源
1.
https://www.cainiaoplus.com/pandas/pandas-dataframe.html

Pandas是Python中一个强大的数据处理库,其中DataFrame是其核心数据结构之一。本文将详细介绍DataFrame的基本概念、创建方法以及对DataFrame的列和行进行查询、添加和删除的操作。

DataFrame的基本概念

DataFrame是二维数据结构,即,数据以表格形式在行和列中对齐。它可以被视为SQL表或电子表格数据表示形式。

DataFrame的构造函数如下:

pandas.DataFrame(data, index, columns, dtype, copy)

参数说明:

  • data: 数据采用各种形式,例如ndarray,系列,映射,列表,dict,常量以及另一个DataFrame。
  • index: 对于行标签,如果没有传递索引,则用于结果帧的索引是Optional Default np.arange(n)。
  • columns: 对于列标签,可选的默认语法为-np.arange(n)。仅当未传递索引时才如此。
  • dtype: 每列的数据类型。
  • copy: 如果默认值为False,则此命令(或任何它的命令)用于复制数据。

创建DataFrame

可以使用各种输入来创建pandas DataFrame:

  • Lists
  • dict
  • Series
  • Numpy ndarrays
  • 另一个DataFrame

创建空DataFrame

import pandas as pd
df = pd.DataFrame()
print(df)

运行结果:

Empty DataFrame
Columns: []
Index: []

从Lists创建DataFrame

data = [1,2,3,4,5]
df = pd.DataFrame(data)
print(df)

运行结果:

0
0 1
1 2
2 3
3 4
4 5

从ndarrays / List的Dict创建一个DataFrame

data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data)
print(df)

运行结果:

Age Name
0 28 Tom
1 34 Jack
2 29 Steve
3 42 Ricky

从字典列表创建DataFrame

data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print(df)

运行结果:

a b c
0 1 2 NaN
1 5 10 20.0

从Dict Series创建DataFrame

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print(df)

运行结果:

one two
a 1.0 1
b 2.0 2
c 3.0 3
d NaN 4

DataFrame的列操作

列查询

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print(df ['one'])

运行结果:

a 1.0
b 2.0
c 3.0
d NaN
Name: one, dtype: float64

列添加

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
df['three']=pd.Series([10,20,30],index=['a','b','c'])
df['four']=df['one']+df['three']
print(df)

运行结果:

one two three four
a 1.0 1 10.0 11.0
b 2.0 2 20.0 22.0
c 3.0 3 30.0 33.0
d NaN 4 NaN NaN

列删除

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']), 
'three' : pd.Series([10,20,30], index=['a','b','c'])}
df = pd.DataFrame(d)
del df['one']
df.pop('two')
print(df)

运行结果:

three
a 10.0
b 20.0
c 30.0
d NaN

DataFrame的行操作

按标签查询

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print(df.loc['b'])

运行结果:

one 2.0
two 2.0
Name: b, dtype: float64

通过整数位置查询

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print(df.iloc[2])

运行结果:

one 3.0
two 3.0
Name: c, dtype: float64

切片行

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print(df[2:4])

运行结果:

one two
c 3.0 3
d NaN 4

添加行

df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])
df = df.append(df2)
print(df)

运行结果:

a b
0 1 2
1 3 4
0 5 6
1 7 8

删除行

df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])
df = df.append(df2)
df = df.drop(0)
print(df)

运行结果:

a b
1 3 4
1 7 8
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号