Pandas入门学习(1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_1290259791/article/details/83120262

Pandas入门学习

Pandas下面有两种常用数据结构,SeriesDataFrame

1、Series

系列(Series)是能够保存任何类型的数据的一维标记数组。
轴标签统称为索引

Series的构造

pandas.Series( data, index, dtype, copy)
参数 描述
data 数据采集的形式如:ndarray、list、dict
index 索引值必须是唯一的和散列的,与数据长度相同。默认:np.arange(n)
dtype dtype 数据类型。默认:推断数据类型
copy 复制数据。默认:False

创建Series

ndarray创建Series

如果数据是ndarray,传递的索引必须具有相同长度。
没有传递索引值,默认索引是返回n,n是数组长度。

import pandas as pd
import numpy as np
data = np.array(['a','b','c','d'])
s1 = pd.Series(data)
s2 = pd.Series(data, index=list('ABCD'))
print(s1)
print(s2)

0    a
1    b
2    c
3    d
dtype: object
A    a
B    b
C    c
D    d
dtype: object

dict创建Series

dict作为输入传递,如果没有指定索引,则按字典键构造索引
如果指定索引,索引中与标签对于的数据值将被拉出

import pandas as pd
import numpy as np
data = {'a':0, 'b':1, 'c':2}
s1 = pd.Series(data)
s2 = pd.Series(data, index=list('bcad'))
print(s1)
print(s2)
a    0
b    1
c    2
dtype: int64
b    1.0
c    2.0
a    0.0
d    NaN
dtype: float64

注意: 指定索引,索引顺序不变,缺少的元素使用NaN填充。

标量创建Series

数据是标量,必须提供索引,将重复该值匹配索引的长度

import pandas as pd
import numpy as np
s = pd.Series(4, index=list(range(4)))
print(s)
0    4
1    4
2    4
3    4
dtype: int64

访问Series数据

系列(Series)中的数据可以使用类似于访问ndarray中的数据来访问。

使用指定位置访问Series

import pandas as pd
import numpy as np
s = pd.Series([1,2,3,4], index = list('abcd'))
print(s[0])
print(s[:3])
print(s[-1:])
1
a    1
b    2
c    3
dtype: int64
d    4
dtype: int64

使用标签访问Series

import pandas as pd
import numpy as np
s = pd.Series([1,2,3,4], index = list('abcd'))
print(s['a'])
print(s[['a','c']])
1
a    1
c    3
dtype: int64

2、DataFrame

数据帧(DataFrame)是二维数组结构,数据以行和列的表格方式排列。

DataFrame的构造

pandas.DataFrame( data, index, columns, dtype, copy)
参数 描述
data 数据采集的形式,如:ndarray、series、map、list、dict、constant或DataFrame
index 行标签。默认索引np.arange(n)
columns 列标签。默认索引np.arange(n)
dtype 每列数据类型
copy 复制数据。默认:False

创建DataFrame

DataFrame 可以使用各种输入创建

  • 列表
  • 字典
  • 系列
  • Ndarrays
  • 另一个DataFrame

列表创建DataFrame

使用单个列表或列表列表创建DataFrame

import pandas as pd
import numpy as np
data1 = [1,2,3,4,5]
data2 = [['a',1],['b',2],['c',3]]
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2, columns=['A', 'B'])
print(df1)
print(df2)
   0
0  1
1  2
2  3
3  4
4  5
   A  B
0  a  1
1  b  2
2  c  3

ndarrays/Lists的字典创建DataFrame

所有的ndarrays必须有相同的长度。
如果传递索引index,则索引的长度应等于数组的长度。
如果没有传递索引,默认情况将range(n)作为索引。

import pandas as pd
import numpy as np
data = {'A':['a','b','c'],'B':[1,2,3]}
df = pd.DataFrame(data)
df1 = pd.DataFrame(data, index=list('ABC'))
print(df)
print(df1)

   A  B
0  a  1
1  b  2
2  c  3
   A  B
A  a  1
B  b  2
C  c  3

列表创建DataFrame

import pandas as pd
import numpy as np
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
df1 = pd.DataFrame(data, index=['first','second'])
print(df)
print(df1)
   a   b     c
0  1   2   NaN
1  5  10  20.0
        a   b     c
first   1   2   NaN
second  5  10  20.0

用Series的字典创建DataFrame

字典的系列传递形成一个DataFrame,得到的索引是所有Series索引的并集。

import pandas as pd
import numpy as np
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

DataFrame列选择

import pandas as pd
import numpy as np
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

DataFrame列添加

import pandas as pd
import numpy as np
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['three'] = pd.Series([10,20,30], index=['a','b','e'])
df['four'] = df['one'] + df['three']
print(df)
   one  two  three  four
a  1.0    1   10.0  11.0
b  2.0    2   20.0  22.0
c  3.0    3    NaN   NaN
d  NaN    4    NaN   NaN

DataFrame列删除

列可以删除或弹出

import pandas as pd
import numpy as np
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)
del df['one']
df.pop('two')
print(df)
Empty DataFrame
Columns: []
Index: [a, b, c, d]

DataFrame行选择

通过行标签传递给loc()函数来进行选择行。

import pandas as pd
import numpy as np
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

通过将正整数传递给iloc()函数进行选择行。

import pandas as pd
import numpy as np
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[1])
one    2.0
two    2.0
Name: b, dtype: float64

DataFrame行切片

使用:运算符选择多行

import pandas as pd
import numpy as np
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

DataFrame行添加

使用append()函数将新行添加到DataFrame

import pandas as pd
import numpy as np
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

DataFrame行删除

使用索引行标签从DataFrame中删除行
标签重复,会删除多行

import pandas as pd
import numpy as np
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)
   a  b
1  3  4
1  7  8

猜你喜欢

转载自blog.csdn.net/qq_1290259791/article/details/83120262