pandas简介
Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。本文重点对pandas的DataFrame创建的不同方式进行展示,并分析其使用场景。
pandas数据结构
1.DataFrame
DataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。
2.Series
Series是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。
DdtaFrame的创建
pandas在创建DataFrame的时候,除了通过内置方法pandas.read_csv()或者pandas.read_excel()直接读取.csv文件或者.excel文件进行创建外,还可以通过以下方式进行创建。
1.通过字典的方式创建
示例1:
import pandas as pd
df = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]})
df输出为:
a b c
0 1 4 7
1 2 5 8
2 3 6 9
解释:通过该方法创建的DataFrame中,字典中的key为DataFrame中的columns,由于未指定行索引,其行索引默认为:RangeIndex(start=0, stop=3, step=1),即输出结果中的第一列。
示例2:
import pandas as pd
df =pd.DataFrame({'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]}, index=['h1', 'h2', 'h3'])
df输出为:
a b c
h1 1 4 7
h2 2 5 8
h3 3 6 9
解释:通过该方法创建的DataFrame中,字典中的key为DataFrame中的columns,索引为指定的index。
2.通过Series的方式创建
示例1:
s1 = pd.Series([1, 2, 3, 4])
print(s1)
0 1
1 2
2 3
3 4
df = s1.to_frame()
df输出为:
0
0 1
1 2
2 3
3 4
解释:Series.to_frame(name=None),name产生维护相当于创建的DataFrame中的列明,由于Series本身只有一条数据,所以创建后的DataFrame只包含一列,由于本例为指定name,所以其df的列名默认为0。
示例1:
s1 = pd.Series([1, 2, 3, 4])
print(s1)
0 1
1 2
2 3
3 4
df = s1.to_frame(‘a’)
df输出为:
a
0 1
1 2
2 3
3 4
解释:Series.to_frame(name=a),name产生维护相当于创建的DataFrame中的列明,由于Series本身只有一条数据,所以创建后的DataFrame只包含一列,所以其df的列名默认为a。
2.通过索引赋值的方式创建
pandas中DataFrame包含行索引index及列索引columns,通过索引的方式创建DataFrame的思路为,先创建索引,然后通过索引进行赋值。
示例:
df = pd.DataFrame(index=['h1', 'h2', 'h3'], columns=['a', 'b', 'c'])
df['a']['h1'] = 1
df输出为:
a b c
h1 1 NaN NaN
h2 NaN NaN NaN
h3 NaN NaN NaN
解释:通过pd.DataFrame指定index和columns的方式创建DataFrame为一个空DataFrame,通过两级索引的方式进行赋值。
总结
pandas通过以上三种方式创建DataFrame的使用场景:
在生产环境中,如果遇到列表类型数据转DataFrame,通过字典方式指定列名可以方便创建DataFrame;
如果单条数据为Series类型,可以通过to_frame指定列名方式(name=‘列名’)进行创建;
如果需要事先定义列名及索引,可以通过pd.DataFrame(index=[], columns=[])的方式创建一个空DataFrame,然后根据两级索引对DataFrame中数据进行赋值。