Column | Type |
---|---|
name | String |
age | integer |
gender | String |
rating | Float |
import pandas as pd pd.DataFrame( data, index, columns, dtype, copy)
参数说明:
参数名称 | 说明 |
---|---|
data | 输入的数据,可以是 ndarray,series,list,dict,标量以及一个 DataFrame。 |
index | 行标签,如果没有传递 index 值,则默认行标签是 np.arange(n),n 代表 data 的元素个数。 |
columns | 列标签,如果没有传递 columns 值,则默认列标签是 np.arange(n)。 |
dtype | dtype表示每一列的数据类型。 |
copy | 默认为 False,表示复制数据 data。 |
import pandas as pd df = pd.DataFrame() print(df)输出结果如下:
Empty DataFrame Columns: [] Index: []
import pandas as pd data = [1,2,3,4,5] df = pd.DataFrame(data) print(df)输出如下:
0 0 1 1 2 2 3 3 4 4 5示例 2,使用嵌套列表创建 DataFrame 对象:
import pandas as pd data = [['Alex',10],['Bob',12],['Clarke',13]] df = pd.DataFrame(data,columns=['Name','Age']) print(df)输出结果:
Name Age 0 Alex 10 1 Bob 12 2 Clarke 13示例 3,指定数值元素的数据类型为 float:
import pandas as pd data = [['Alex',10],['Bob',12],['Clarke',13]] df = pd.DataFrame(data,columns=['Name','Age'],dtype=float) print(df)输出结果:
Name Age 0 Alex 10.0 1 Bob 12.0 2 Clarke 13.0
import pandas as pd 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注意:这里使用了默认行标签,也就是 range(n)。它生成了 0,1,2,3,并分别对应了列表中的每个元素值。
import pandas as pd data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]} df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4']) print(df)输出结果如下:
Age Name rank1 28 Tom rank2 34 Jack rank3 29 Steve rank4 42 Ricky注意:index 参数为每行分配了一个索引。
import pandas as pd 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注意:如果其中某个元素值缺失,也就是字典的 key 无法找到对应的 value,将使用 NaN 代替。
import pandas as pd data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}] df = pd.DataFrame(data, index=['first', 'second']) print(df)输出结果:
a b c first 1 2 NaN second 5 10 20.0示例 8,如何使用字典嵌套列表以及行、列索引表创建一个 DataFrame 对象。
import pandas as pd data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}] df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b']) df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1']) print(df1) print(df2)输出结果:
#df2输出 a b first 1 2 second 5 10 #df1输出 a b1 first 1 NaN second 5 NaN注意:因为 b1 在字典键中不存在,所以对应值为 NaN。
import pandas as pd 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注意:对于 one 列而言,此处虽然显示了行索引 'd',但由于没有与其对应的值,所以它的值为 NaN。
import pandas as pd 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
import pandas as pd 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['列']=值,插入新的数据列 df['three']=pd.Series([10,20,30],index=['a','b','c']) print(df) #将已经存在的数据列做相加运算 df['four']=df['one']+df['three'] print(df)输出结果:
使用列索引创建新数据列: one two three a 1.0 1 10.0 b 2.0 2 20.0 c 3.0 3 30.0 d NaN 4 NaN 已存在的数据列做算术运算: 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上述示例,我们初次使用了 DataFrame 的算术运算,这和 NumPy 非常相似。除了使用
df[]=value
的方式外,您还可以使用 insert() 方法插入新的列,示例如下:
import pandas as pd info=[['Jack',18],['Helen',19],['John',17]] df=pd.DataFrame(info,columns=['name','age']) print(df) #注意是column参数 #数值1代表插入到columns列表的索引位置 df.insert(1,column='score',value=[91,90,75]) print(df)输出结果:
添加前: name age 0 Jack 18 1 Helen 19 2 John 17 添加后: name score age 0 Jack 91 18 1 Helen 90 19 2 John 75 17
import pandas as pd 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) print ("Our dataframe is:") print(df) #使用del删除 del df['one'] print(df) #使用pop方法删除 df.pop('two') print (df)输出结果:
原DataFrame: one three two a 1.0 10.0 1 b 2.0 20.0 2 c 3.0 30.0 3 d NaN NaN 4 使用del删除 first: three two a 10.0 1 b 20.0 2 c 30.0 3 d NaN 4 使用 pop()删除: three a 10.0 b 20.0 c 30.0 d NaN
import pandas as pd 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注意:loc 允许接两个参数分别是行和列,参数之间需要使用“逗号”隔开,但该函数只能接收标签索引。
import pandas as pd 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注意:iloc 允许接受两个参数分别是行和列,参数之间使用“逗号”隔开,但该函数只能接收整数索引。
import pandas as pd 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
import pandas as pd 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
import pandas as pd 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) #注意此处调用了drop()方法 df = df.drop(0) print (df)输出结果:
执行drop(0)前: a b 0 1 2 1 3 4 0 5 6 1 7 8 执行drop(0)后: a b 1 3 4 1 7 8在上述的示例中,默认使用 range(2) 生成了行索引,并通过 drop(0) 同时删除了两行数据。
名称 | 属性&方法描述 |
---|---|
T | 行和列转置。 |
axes | 返回一个仅以行轴标签和列轴标签为成员的列表。 |
dtypes | 返回每列数据的数据类型。 |
empty | DataFrame中没有数据或者任意坐标轴的长度为0,则返回True。 |
ndim | 轴的数量,也指数组的维数。 |
shape | 返回一个元组,表示了 DataFrame 维度。 |
size | DataFrame中的元素数量。 |
values | 使用 numpy 数组表示 DataFrame 中的元素值。 |
head() | 返回前 n 行数据。 |
tail() | 返回后 n 行数据。 |
shift() | 将行或列移动指定的步幅长度 |
import pandas as pd import numpy as np d = {'Name':pd.Series(['c语言中文网','编程帮',"百度",'360搜索','谷歌','微学苑','Bing搜索']), 'years':pd.Series([5,6,15,28,3,19,23]), 'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])} #构建DataFrame df = pd.DataFrame(d) #输出series print(df)输出结果:
输出 series 数据: Name years Rating 0 c语言中文网 5 4.23 1 编程帮 6 3.24 2 百度 15 3.98 3 360搜索 28 2.56 4 谷歌 3 3.20 5 微学苑 19 4.60 6 Bing搜索 23 3.80
import pandas as pd import numpy as np d = {'Name':pd.Series(['c语言中文网','编程帮',"百度",'360搜索','谷歌','微学苑','Bing搜索']), 'years':pd.Series([5,6,15,28,3,19,23]), 'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])} #构建DataFrame df = pd.DataFrame(d) #输出DataFrame的转置 print(df.T)输出结果:
Our data series is: 0 1 2 3 4 5 6 Name c语言中文网 编程帮 百度 360搜索 谷歌 微学苑 Bing搜索 years 5 6 15 28 3 19 23 Rating 4.23 3.24 3.98 2.56 3.2 4.6 3.8
import pandas as pd import numpy as np d = {'Name':pd.Series(['c语言中文网','编程帮',"百度",'360搜索','谷歌','微学苑','Bing搜索']), 'years':pd.Series([5,6,15,28,3,19,23]), 'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])} #构建DataFrame df = pd.DataFrame(d) #输出行、列标签 print(df.axes)输出结果:
[RangeIndex(start=0, stop=7, step=1), Index(['Name', 'years', 'Rating'], dtype='object')]
import pandas as pd import numpy as np d = {'Name':pd.Series(['c语言中文网','编程帮',"百度",'360搜索','谷歌','微学苑','Bing搜索']), 'years':pd.Series([5,6,15,28,3,19,23]), 'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])} #构建DataFrame df = pd.DataFrame(d) #输出行、列标签 print(df.dtypes)输出结果:
Name object years int64 Rating float64 dtype: object
import pandas as pd import numpy as np d = {'Name':pd.Series(['c语言中文网','编程帮',"百度",'360搜索','谷歌','微学苑','Bing搜索']), 'years':pd.Series([5,6,15,28,3,19,23]), 'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])} #构建DataFrame df = pd.DataFrame(d) #判断输入数据是否为空 print(df.empty)输出结果:
判断输入对象是否为空: False
import pandas as pd import numpy as np d = {'Name':pd.Series(['c语言中文网','编程帮',"百度",'360搜索','谷歌','微学苑','Bing搜索']), 'years':pd.Series([5,6,15,28,3,19,23]), 'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])} #构建DataFrame df = pd.DataFrame(d) #DataFrame的维度 print(df.ndim)输出结果:
2
import pandas as pd import numpy as np d = {'Name':pd.Series(['c语言中文网','编程帮',"百度",'360搜索','谷歌','微学苑','Bing搜索']), 'years':pd.Series([5,6,15,28,3,19,23]), 'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])} #构建DataFrame df = pd.DataFrame(d) #DataFrame的形状 print(df.shape) 输出结果:
(7, 3)
import pandas as pd import numpy as np d = {'Name':pd.Series(['c语言中文网','编程帮',"百度",'360搜索','谷歌','微学苑','Bing搜索']), 'years':pd.Series([5,6,15,28,3,19,23]), 'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])} #构建DataFrame df = pd.DataFrame(d) #DataFrame的中元素个数 print(df.size)输出结果:
21
import pandas as pd import numpy as np d = {'Name':pd.Series(['c语言中文网','编程帮',"百度",'360搜索','谷歌','微学苑','Bing搜索']), 'years':pd.Series([5,6,15,28,3,19,23]), 'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])} #构建DataFrame df = pd.DataFrame(d) #DataFrame的数据 print(df.values)输出结果:
[['c语言中文网' 5 4.23] ['编程帮' 6 3.24] ['百度' 15 3.98] ['360搜索' 28 2.56] ['谷歌' 3 3.2] ['微学苑' 19 4.6] ['Bing搜索' 23 3.8]]
import pandas as pd import numpy as np d = {'Name':pd.Series(['c语言中文网','编程帮',"百度",'360搜索','谷歌','微学苑','Bing搜索']), 'years':pd.Series([5,6,15,28,3,19,23]), 'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])} #构建DataFrame df = pd.DataFrame(d) #获取前3行数据 print(df.head(3))输出结果:
Name years Rating 0 c语言中文网 5 4.23 1 编程帮 6 3.24 2 百度 15 3.98tail() 返回后 n 行数据,示例如下:
import pandas as pd import numpy as np d = {'Name':pd.Series(['c语言中文网','编程帮',"百度",'360搜索','谷歌','微学苑','Bing搜索']), 'years':pd.Series([5,6,15,28,3,19,23]), 'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])} #构建DataFrame df = pd.DataFrame(d) #获取后2行数据 print(df.tail(2))输出结果:
Name years Rating 5 微学苑 19 4.6 6 Bing搜索 23 3.8
periods
参数,该参数表示在特定的轴上移动指定的步幅。DataFrame.shift(periods=1, freq=None, axis=0)
参数说明如下:参数名称 | 说明 |
---|---|
peroids | 类型为int,表示移动的幅度,可以是正数,也可以是负数,默认值为1。 |
freq | 日期偏移量,默认值为None,适用于时间序。取值为符合时间规则的字符串。 |
axis | 如果是 0 或者 "index" 表示上下移动,如果是 1 或者 "columns" 则会左右移动。 |
fill_value | 该参数用来填充缺失值。 |
import pandas as pd info= pd.DataFrame({'a_data': [40, 28, 39, 32, 18], 'b_data': [20, 37, 41, 35, 45], 'c_data': [22, 17, 11, 25, 15]}) #移动幅度为3 info.shift(periods=3)输出结果:
a_data b_data c_data 0 NaN NaN NaN 1 NaN NaN NaN 2 NaN NaN NaN 3 40.0 20.0 22.0 4 28.0 37.0 17.0下面使用 fill_value 参数填充 DataFrame 中的缺失值,如下所示:
import pandas as pd info= pd.DataFrame({'a_data': [40, 28, 39, 32, 18], 'b_data': [20, 37, 41, 35, 45], 'c_data': [22, 17, 11, 25, 15]}) #移动幅度为3 print(info.shift(periods=3)) #将缺失值和原数值替换为52 info.shift(periods=3,axis=1,fill_value= 52)输出结果:
原输出结果: a_data b_data c_data 0 NaN NaN NaN 1 NaN NaN NaN 2 NaN NaN NaN 3 40.0 20.0 22.0 4 28.0 37.0 17.0 替换后输出: a_data b_data c_data 0 52 52 52 1 52 52 52 2 52 52 52 3 52 52 52 4 52 52 52注意:fill_value 参数不仅可以填充缺失值,还也可以对原数据进行替换。
本文链接:http://task.lmcjl.com/news/17247.html