python dataframe是什么_【Python-pandas】核心数据结构DataFrame介绍

DataFrame是pandas的核心数据结构,类似电子表格或数据库表格。它可以由列表、NumPy数组、Series或另一个DataFrame创建。本文展示了如何通过不同方式创建DataFrame,包括从列表、NumPy数组、字典和Excel文件导入数据。
摘要由CSDN通过智能技术生成

之前我们已经介绍过,DataFrame数据框和Series序列一起,是pandas的最核心的两种数据结果。而且,由Series可以拼接成为DataFrame。

如下图所示:

我们继续看下DataFrame完整的pandas官方介绍:DataFrame is a 2-dimensional labeled data structure with columns of potentially different types. You can think of it like a spreadsheetor SQL table, or a dict of Series objects. It is generally the most commonly used pandas object. Like Series, DataFrame accepts many different kinds of input:Dict of 1D ndarrays, lists, dicts, or Series - 一维数组字典、列表、字典,或者序列

2-D numpy.ndarray - 二维的NumPy数组

A Series- 单个序列

Another DataFrame - 另外一个数据框

下面通过多种方法,演示如何创建一个DataFrame数据框。

通过列表list数据进行转换:

import pandas as pd

import numpy as np

list1 = [[1, 2, 3], ##几层中括号,就是几维的列表

[4, 5, 6],

[7, 8, 9]]

list1

Out[111]: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

df1 = pd.DataFrame(list1) ##转换为数据框

df1

Out[113]:

0 1 2

0 1 2 3

1 4 5 6

2 7 8 9

通过NumPy生成的随机数进行转换

##通过NumPy的随机整数生成函数randint生成9个0-100的随机整数

##然后再通过NumPy的reshape转换为3x3的数组

array1 = np.random.randint(0, 101, 9).reshape(3, 3)

array1

Out[118]:

array([[92, 43, 65],

[73, 11, 93],

[96, 34, 2]])

##再通过pd.DataFrame转换为DataFrame

df2 = pd.DataFrame(array1)

df2

Out[121]:

0 1 2

0 92 43 65

1 73 11 93

2 96 34 2

##通过columns传入列名字

##通过index传入行索引index的取值

list1 = [[1, 2, 3], ##几层中括号,就是几维的列表

[4, 5, 6],

[7, 8, 9]]

df3 = pd.DataFrame(list1,

columns = ['a', 'b', 'c'],

index = ['x', 'y', 'z'])

df3

Out[124]:

a b c

x 1 2 3

y 4 5 6

z 7 8 9

通过字典dictionary数据进行转换

或者通过字典dictionary的方式,逐列创建数据框DataFrame。这里字典的键key,就转换为了DataFrame的列名;字典的值values,就转换为数据库的一列数据。

d1 = {'Name': ['Steph', 'LeBron', 'Harden'],

'Heihgt': [192, 206, 198]

}

d1

Out[79]: {'Name': ['Steph', 'LeBron', 'Harden'], 'Heihgt': [192, 206, 198]}

df4 = pd.DataFrame(d1)

df4

Out[81]:

Name Heihgt

0 Steph 192

1 LeBron 206

2 Harden 198

在Spyder中的Variable explorer中双击df4查看。

通过导入现成数据创建DataFrame:

这里以Excel数据为例。

我们先用Stata导出一个叫auto的xls数据集(Python的sklearn包也带有大量的范例数据集,但是用起来对新手不太友好)。

导出后的Excel文档如下。

我们使用pd.read_excel函数导入该Excel文档。

auto = pd.read_excel(r"D:\Stata\auto.xls")

auto.describe()

Out[105]:

price mpg rep78 ... turn displacement gear_ratio

count 74.000000 74.000000 69.000000 ... 74.000000 74.000000 74.000000

mean 6165.256757 21.297297 3.405797 ... 39.648649 197.297297 3.014865

std 2949.495885 5.785503 0.989932 ... 4.399354 91.837219 0.456287

min 3291.000000 12.000000 1.000000 ... 31.000000 79.000000 2.190000

25% 4220.250000 18.000000 3.000000 ... 36.000000 119.000000 2.730000

50% 5006.500000 20.000000 3.000000 ... 40.000000 196.000000 2.955000

75% 6332.250000 24.750000 4.000000 ... 43.000000 245.250000 3.352500

max 15906.000000 41.000000 5.000000 ... 51.000000 425.000000 3.890000

[8 rows x 10 columns]

str(auto)

Out[106]: ' make price mpg rep78 ... turn displacement gear_ratio foreign\n0 AMC Concord 4099 22 3.0 ... 40 121 3.58 Domestic\n1 AMC Pacer 4749 17 3.0 ... 40 258 2.53 Domestic\n2 AMC Spirit 3799 22 NaN ... 35 121 3.08 Domestic\n3 Buick Century 4816 20 3.0 ... 40 196 2.93 Domestic\n4 Buick Electra 7827 15 4.0 ... 43 350 2.41 Domestic\n.. ... ... ... ... ... ... ... ... ...\n69 VW Dasher 7140 23 4.0 ... 36 97 3.74 Foreign\n70 VW Diesel 5397 41 5.0 ... 35 90 3.78 Foreign\n71 VW Rabbit 4697 25 4.0 ... 35 89 3.78 Foreign\n72 VW Scirocco 6850 25 4.0 ... 36 97 3.78 Foreign\n73 Volvo 260 11995 17 5.0 ... 37 163 2.98 Foreign\n\n[74 rows x 12 columns]'

在变量浏览器中查看auto数据框,如下。

pd.read_excel的完整函数如下。其参数很多,我们这里只介绍几个常用的参数。pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None,s queeze=False, dtype=None, engine=None, converters=None, true_values=None, false_values=None,skiprows=None,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=False,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,convert_float=True,mangle_dupe_cols=True)

pd.read_excel几个常用的参数解释:io:Excel文件的路径

sheet_name:sheet的名称

names:列名称的列表。如果这里指定的话,后面的hearder必须声明 header=None

header:指定作为列索引的行。通常是首行

index_col:制定作为行索引的列。通常是首列。和列索引一样,行索引的取值必须唯一

-----全文结束-----

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值