📜  Python Pandas DataFrame

📅  最后修改于: 2020-10-29 01:44:21             🧑  作者: Mango

Python Pandas DataFrame

Pandas DataFrame是一种广泛使用的数据结构,可用于带有标记轴(行和列)的二维数组。 DataFrame被定义为存储具有两个不同索引(即行索引和列索引)的数据的标准方法。它包含以下属性:

  • 列可以是异构类型,例如int,bool等。
  • 可以看作是Series结构的字典,其中行和列都被索引了。如果是列,则表示为“列”;如果是行,则表示为“索引”。

参数及说明:

数据:它由ndarray,系列,map,常量,列表,数组等不同形式组成。

index:如果未传递索引,则默认np.arrange(n)索引用于行标签。

列:列标签的默认语法为np.arrange(n)。如果未传递索引,则仅显示true。

dtype:指每一列的数据类型。

copy():用于复制数据。

创建一个DataFrame

我们可以使用以下方式创建一个DataFrame:

  • Dict
  • List
  • ndarrrays
  • Series

创建一个空的DataFrame

以下代码显示了如何在Pandas中创建一个空的DataFrame:

# importing the pandas library
import pandas as pd
df = pd.DataFrame()
print (df)

输出量

Empty DataFrame
Columns: []
Index: []

说明:在上面的代码中,首先,我们导入了别名为pd的pandas库,然后定义了一个名为df的变量,该变量包含一个空的DataFrame。最后,我们通过将df传递给print。

使用列表创建一个DataFrame:

我们可以使用list在Pandas中轻松创建一个DataFrame。

# importing the pandas library
import pandas as pd
# a list of strings
x = ['Python', 'Pandas']

# Calling DataFrame constructor on list
df = pd.DataFrame(x)
print(df)

输出量

      0
0   Python
1   Pandas

说明:在上面的代码中,我们定义了一个名为“ x”的变量,它由字符串值组成。正在调用DataFrame构造函数以获取列表以print值。

从ndarrays / List的Dict创建一个DataFrame

# importing the pandas library
import pandas as pd
info = {'ID' :[101, 102, 103],'Department' :['B.Sc','B.Tech','M.Tech',]}
df = pd.DataFrame(info)
print (df)

输出量

       ID      Department
0      101        B.Sc
1      102        B.Tech
2      103        M.Tech

说明:在上面的代码中,我们定义了一个名为“ info”的字典,该字典包含ID和Department的列表。为了打印值,我们必须通过名为df的变量调用信息字典,并将其作为参数传递给print()。

通过系列字典创建一个DataFrame:

# importing the pandas library
import pandas as pd

info = {'one' : pd.Series([1, 2, 3, 4, 5, 6], index=['a', 'b', 'c', 'd', 'e', 'f']),
   'two' : pd.Series([1, 2, 3, 4, 5, 6, 7, 8], index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])}

d1 = pd.DataFrame(info)
print (d1)

输出量

        one         two
a       1.0          1
b       2.0          2
c       3.0          3
d       4.0          4
e       5.0          5
f       6.0          6
g       NaN          7
h       NaN          8

说明:在上面的代码中,名为“ info”的字典由两个具有各自索引的Series组成。为了打印值,我们必须通过名为d1的变量调用信息字典,并将其作为参数传递给print()。

列选择

我们可以从DataFrame中选择任何列。这是演示如何从DataFrame中选择列的代码。

# importing the pandas library
import pandas as pd

info = {'one' : pd.Series([1, 2, 3, 4, 5, 6], index=['a', 'b', 'c', 'd', 'e', 'f']),
   'two' : pd.Series([1, 2, 3, 4, 5, 6, 7, 8], index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])}

d1 = pd.DataFrame(info)
print (d1 ['one'])

输出量

a      1.0
b      2.0
c      3.0
d      4.0
e      5.0
f      6.0
g      NaN
h      NaN
Name: one, dtype: float64

说明:在上面的代码中,名为“ info”的字典由两个具有各自索引的Series组成。后来,我们通过变量d1调用了信息字典,并通过将其传递给print()从DataFrame中选择了“一个”系列。

列添加

我们还可以将任何新列添加到现有DataFrame中。以下代码演示了如何将任何新列添加到现有DataFrame中:

# importing the pandas library
import pandas as pd

info = {'one' : pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e']),
   'two' : pd.Series([1, 2, 3, 4, 5, 6], index=['a', 'b', 'c', 'd', 'e', 'f'])}

df = pd.DataFrame(info)

# Add a new column to an existing DataFrame object 

print ("Add new column by passing series")
df['three']=pd.Series([20,40,60],index=['a','b','c'])
print (df)

print ("Add new column using existing DataFrame columns")
df['four']=df['one']+df['three']

print (df)

输出量

Add new column by passing series
      one     two      three
a     1.0      1        20.0
b     2.0      2        40.0
c     3.0      3        60.0
d     4.0      4        NaN
e     5.0      5        NaN
f     NaN      6        NaN

Add new column using existing DataFrame columns
       one      two       three      four
a      1.0       1         20.0      21.0
b      2.0       2         40.0      42.0
c      3.0       3         60.0      63.0
d      4.0       4         NaN      NaN
e      5.0       5         NaN      NaN
f      NaN       6         NaN      NaN

说明:在上面的代码中,名为f的字典包含两个带有各自索引的Series。后来,我们通过变量df调用了信息字典。

为了向现有的DataFrame对象添加新列,我们传递了一个新系列,其中包含一些有关其索引的值,并使用print()打印了其结果。

我们可以使用现有的DataFrame添加新列。添加了“四”列,该列存储两列即一列和三列相加的结果。

列删除:

我们还可以从现有DataFrame中删除任何列。此代码有助于说明如何从现有DataFrame中删除该列:

# importing the pandas library
import pandas as pd

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

# using del function
print ("Delete the first column:")
del df['one']
print (df)
# using pop function
print ("Delete the another column:")
df.pop('two')
print (df)

输出量

The DataFrame:
      one    two
a     1.0     1
b     2.0     2
c     NaN     3

Delete the first column:
     two
a     1
b     2
c     3

Delete the another column:
Empty DataFrame
Columns: []
Index: [a, b, c]

说明:

在上面的代码中,df变量负责调用信息字典并print字典的全部值。我们可以使用delete或pop函数从DataFrame中删除列。

在第一种情况下,我们使用delete函数从DataFrame中删除“一个”列,而在第二种情况下,我们使用pop函数从数据帧中删除“ two”列。

行选择,添加和删除

行选择:

我们可以随时轻松地选择,添加或删除任何行。首先,我们将了解行的选择。让我们看看如何使用以下不同方式选择行:

按标签选择:

我们可以通过将行标签传递给loc函数来选择任何行。

# importing the pandas library
import pandas as pd

info = {'one' : pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e']), 
   'two' : pd.Series([1, 2, 3, 4, 5, 6], index=['a', 'b', 'c', 'd', 'e', 'f'])}

df = pd.DataFrame(info)
print (df.loc['b'])

输出量

one    2.0
two    2.0
Name: b, dtype: float64

说明:在上面的代码中,名为info的字典由两个具有各自索引的Series组成。

为了选择行,我们将行标签传递给loc函数。

通过整数位置选择:

也可以通过将整数位置传递给iloc函数来选择行。

# importing the pandas library
import pandas as pd
info = {'one' : pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e']),
   'two' : pd.Series([1, 2, 3, 4, 5, 6], index=['a', 'b', 'c', 'd', 'e', 'f'])}
df = pd.DataFrame(info)
print (df.iloc[3])

输出量

one    4.0
two    4.0
Name: d, dtype: float64

说明:说明:在上面的代码中,我们定义了一个名为info的字典,该字典由两个具有各自索引的Series组成。

为了选择行,我们将整数位置传递给iloc函数。

切片行

这是使用’:’运算符选择多行的另一种方法。

# importing the pandas library
import pandas as pd
info = {'one' : pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e']), 
   'two' : pd.Series([1, 2, 3, 4, 5, 6], index=['a', 'b', 'c', 'd', 'e', 'f'])}
df = pd.DataFrame(info)
print (df[2:5])

输出量

      one    two
c     3.0     3
d     4.0     4
e     5.0     5

说明:在上面的代码中,我们为选择行定义了一个2:5的范围,然后将其值打印在控制台上。

行的增加:

我们可以使用append函数轻松地向DataFrame添加新行。它在末尾添加新行。

# importing the pandas library
import pandas as pd
d = pd.DataFrame([[7, 8], [9, 10]], columns = ['x','y'])
d2 = pd.DataFrame([[11, 12], [13, 14]], columns = ['x','y'])
d = d.append(d2)
print (d)

输出量

      x      y
0     7      8
1     9      10
0     11     12
1     13     14

说明:在上面的代码中,我们定义了两个单独的列表,其中包含一些行和列。这些列已使用append函数添加,然后结果显示在控制台上。

删除行:

我们可以使用索引标签从DataFrame删除或删除任何行。如果万一标签重复,则将删除多行。

# importing the pandas library
import pandas as pd

a_info = pd.DataFrame([[4, 5], [6, 7]], columns = ['x','y'])
b_info = pd.DataFrame([[8, 9], [10, 11]], columns = ['x','y'])

a_info = a_info.append(b_info)

# Drop rows with label 0
a_info = a_info.drop(0)

输出量

x      y
1     6      7
1     10    11

说明:在上面的代码中,我们定义了两个单独的列表,其中包含一些行和列。

在这里,我们定义了需要从列表中删除的行的索引标签。

DataFrame函数

DataFrame中使用了许多功能,如下所示:

Functions Description
Pandas DataFrame.append() Add the rows of other dataframe to the end of the given dataframe.
Pandas DataFrame.apply() Allows the user to pass a function and apply it to every single value of the Pandas series.
Pandas DataFrame.assign() Add new column into a dataframe.
Pandas DataFrame.astype() Cast the Pandas object to a specified dtype.astype() function.
Pandas DataFrame.concat() Perform concatenation operation along an axis in the DataFrame.
Pandas DataFrame.count() Count the number of non-NA cells for each column or row.
Pandas DataFrame.describe() Calculate some statistical data like percentile, mean and std of the numerical values of the Series or DataFrame.
Pandas DataFrame.drop_duplicates() Remove duplicate values from the DataFrame.
Pandas DataFrame.groupby() Split the data into various groups.
Pandas DataFrame.head() Returns the first n rows for the object based on position.
Pandas DataFrame.hist() Divide the values within a numerical variable into “bins”.
Pandas DataFrame.iterrows() Iterate over the rows as (index, series) pairs.
Pandas DataFrame.mean() Return the mean of the values for the requested axis.
Pandas DataFrame.melt() Unpivots the DataFrame from a wide format to a long format.
Pandas DataFrame.merge() Merge the two datasets together into one.
Pandas DataFrame.pivot_table() Aggregate data with calculations such as Sum, Count, Average, Max, and Min.
Pandas DataFrame.query() Filter the dataframe.
Pandas DataFrame.sample() Select the rows and columns from the dataframe randomly.
Pandas DataFrame.shift() Shift column or subtract the column value with the previous row value from the dataframe.
Pandas DataFrame.sort() Sort the dataframe.
Pandas DataFrame.sum() Return the sum of the values for the requested axis by the user.
Pandas DataFrame.to_excel() Export the dataframe to the excel file.
Pandas DataFrame.transpose() Transpose the index and columns of the dataframe.
Pandas DataFrame.where() Check the dataframe for one or more conditions.