数据帧(DataFrame)是二维数据结构,即数据以行和列的表格方式排列。
功能特点:
潜在的列是不同的类型
大小可变
标记轴(行和列)
可以对行和列执行算术运算
构造函数:
pandas.DataFrame(data, index, columns, dtype, copy)
data:各种形式的数据,ndarray,series,map,lists,dict,constant和另一个DataFrame //原文出自【易百教程】,商业转载请联系作者获得授权,非商业转
index:对于行标签,要用于结果帧的索引是可选缺省值no.arrange(n),如果没有传递索引值。
columns:对于 列标签,可选用的默认语法是-np.arrange(n)。这只是在没有索引传递的情况下才是这样。
dtype:每一列的数据类型
copy:如果默认值是false,则此命令用于复制数据
数据帧(DataFrame)创建:
可以使用各种输入创建,列表,字典,Series,Numpy ndarrays, 另一个DataFrame
创建一个空的DataFrame
import pandas as pd
df = pd.DataFrame()
print(df)
从列表创建DataFrame
import pandas as pd
data = [1,2,3,4,5]
df = pd.DataFrame(data)
print(df)
import pandas as pd
# data = [['aaron', 30], ['willis', 28], ['jax', '26'], ['max', 29]]
# df = pd.DataFrame(data, columns=['name', 'age'])
# print(df)
data = [['aaron', 30], ['willis', 28], ['jax', '26'], ['max', 29]]
df = pd.DataFrame(data, columns=['name', 'Age'], dtype=float)
print(df)
从ndarrays/lists的字典来创建DataFrame
所有的ndarrays必须具有相同的长度。如果传递了索引(index),则索引的长度应等于数组的长度,如果没有传递
索引,默认情况下,索引将为range(n),其中n为数组的长度。
import pandas as pd
data = {'Name':['aaron', 'victoria', 'max', 'jax', 'willis'], 'Age':[28,27,26,24,29]}
df = pd.DataFrame(data)
print(df)
使用数组创建一个索引的数据帧
import pandas as pd
data = {'Name': ['aaron', 'victoria', 'max', 'jax', 'willis'], 'Age': [28, 27, 26, 24, 29]}
df = pd.DataFrame(data, index=['rank1', 'rank2', 'rank3', 'rank4', 'rank5'])
print(df)
字典列表可作为输入数据传递以用来创建数据帧,字典默认为列名
import pandas as pd
data = [{'name':'jax'},{'name':'aaron', 'age':29}, {'name':'Jaosn', 'age':36},{'name':'max','age':29}]
df = pd.DataFrame(data)
print(df)
import pandas as pd
data = [{'name':'jax'},{'name':'aaron', 'age':29}, {'name':'Jaosn', 'age':36},{'name':'max','age':29}]
df = pd.DataFrame(data, index=['First','Second', 'Third', 'Fouth'])
print(df)
使用字典,行索引和列索引列表创建数据帧
从Series的字典来创建DataFrame
字典的系列可以传递以行程单一个DataFrame, 所得到的索引是通过的所有系列索引的并集。
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)
列选择
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'])
print(df['two'])
列添加
#下面通过 向现有数据框添加一个新列来说明
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("Adding a new column by passing as Series:")
df['three'] = pd.Series([10,20,30], index=['a', 'b', 'c'])
print('df1:',df)
print("Adding a new column using the existing columns in dataframe:")
df['four'] = df['one'] + df['three']
print('df2', df)
列删除
#列可以删除或弹出
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:',df)
print("Deleting the first column using DEL function:")
del df['one']
print('del:', df)
print("Deleting another column using pop function:")
df.pop('two')
print('pop:',df)
行选择添加和删除
1、标签选择
#通过将行标签传递给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('loc function:\n ', df.loc['b'])
2、按整数位置选择
#通过将行标签传递给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('loc function:\n ', df.loc['b'])
#将整数位置传递给iloc()函数来选择行
print('iloc', df.iloc[2])
行切片
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])
附加行
#使用append()函数将新行添加到DataFrame
import pandas as pd
df = pd.DataFrame([[1,2], [3,4]], columns=['a', 'b'])
df2 = pd.DataFrame([[5,6],[7,8]],columns=['a', 'b'])
#print(df)
#print(df2)
df = df.append(df2)
print('df:',df)
删除行
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)
df = df.drop(0)
print(df)