目录
介绍:
Pandas是一个开源的Python数据分析库,提供了丰富的数据结构和数据分析工具,使得数据处理任务变得更加简单和高效。Pandas主要包括两个核心数据结构:Series和DataFrame。
Series是一维的数据结构,类似于一维数组,可以存储任意类型的数据。Series的特点是具有索引,可以根据索引来访问和操作数据。
DataFrame是二维的表格结构,类似于关系型数据库中的表格,可以存储多种类型的数据。DataFrame由多个Series组成,每个Series代表一列数据,可以通过列的索引来访问和操作数据。
Pandas提供了丰富的数据处理和分析工具,包括数据读取、数据过滤、数据清洗、数据计算、数据统计、数据可视化等功能。Pandas还可以与其他数据分析库(如NumPy、Matplotlib等)集成使用,可以方便地进行数据分析和可视化。
一、生成DataFrame
pd.DataFrame(np.arange(0,20).reshape(5,4))#生成表结构
'''结果:
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
4 16 17 18 19'''
pd.DataFrame(np.arange(0,20).reshape(5,4),index['Row1','Row2','Row3','Row4','Row5'],columns=['Column1','Column2','Column3','Column4'])#加行表头,列表头
'''结果:
Column1 Column2 Column3 Column4
Row1 0 1 2 3
Row2 4 5 6 7
Row3 8 9 10 11
Row4 12 13 14 15
Row5 16 17 18 19'''
df=pd.DataFrame(np.arange(0,20).reshape(5,4),index['Row1','Row2','Row3','Row4','Row5'],columns=['Column1','Column2','Column3','Column4'])#加行表头,列表头
print(df)
'''结果:
Column1 Column2 Column3 Column4
Row1 0 1 2 3
Row2 4 5 6 7
Row3 8 9 10 11
Row4 12 13 14 15
Row5 16 17 18 19'''
二、访问DateFrame
df=pd.DataFrame(np.arange(0,20).reshape(5,4),index['Row1','Row2','Row3','Row4','Row5'],columns=['Column1','Column2','Column3','Column4'])#加行表头,列表头
'''结果:
Column1 Column2 Column3 Column4
Row1 0 1 2 3
Row2 4 5 6 7
Row3 8 9 10 11
Row4 12 13 14 15
Row5 16 17 18 19'''
df.head()#只显示前五行
'''结果:
Column1 Column2 Column3 Column4
Row1 0 1 2 3
Row2 4 5 6 7
Row3 8 9 10 11
Row4 12 13 14 15
Row5 16 17 18 19
'''
df.loc['Row5']#访问第五行
'''结果:
Column1 16
Column2 17
Column3 18
Column4 19
Name: Row5, dtype: int32
'''
df.loc["Row5",'Column2']#访问第五行,第二列
#结果:17
type(df.loc['Row5'])#第五行类型
#结果:pandas.core.series.Series
df.loc[:,:]#访问整个表格
'''结果:
Column1 Column2 Column3 Column4
Row1 0 1 2 3
Row2 4 5 6 7
Row3 8 9 10 11
Row4 12 13 14 15
Row5 16 17 18 19
'''
df.iloc[:,1:]#所有行,第一列到所有列
'''结果:
Column2 Column3 Column4
Row1 1 2 3
Row2 5 6 7
Row3 9 10 11
Row4 13 14 15
Row5 17 18 19
'''
df.iloc[:,1:].values#所有行,第一列到所有列的值
'''结果:
array([[ 1, 2, 3],
[ 5, 6, 7],
[ 9, 10, 11],
[13, 14, 15],
[17, 18, 19]])
'''
df['Column1'].value_counts()#第一列元素出现的次数
'''结果:
0 1
4 1
8 1
12 1
16 1
Name: Column1, dtype: int64
'''
三、读取文件
df=pd.read_csv('data1.csv')#读文件
'''结果:
d x c s a
0 1 2 3 4 5
1 4 5 6 5 6
2 1 2 3 4 5
3 7 8 9 9 6
4 1 2 4 5 6
5 9 4 3 3 2
6 7 7 8 5 6
7 4 5 6 5 4
'''
df.head()#显示前五行
'''结果:
d x c s a
0 1 2 3 4 5
1 4 5 6 5 6
2 1 2 3 4 5
3 7 8 9 9 6
4 1 2 4 5 6
'''
df.tail()#显示末尾五行
'''结果:
d x c s a
3 7 8 9 9 6
4 1 2 4 5 6
5 9 4 3 3 2
6 7 7 8 5 6
7 4 5 6 5 4
'''
df.head(7)#显示7行
'''结果:
d x c s a
0 1 2 3 4 5
1 4 5 6 5 6
2 1 2 3 4 5
3 7 8 9 9 6
4 1 2 4 5 6
5 9 4 3 3 2
6 7 7 8 5 6
'''
df.info()
'''结果:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8 entries, 0 to 7
Data columns (total 1 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 d x c s a 8 non-null object
dtypes: object(1)
memory usage: 192.0+ bytes
'''
df.describe()#描述表格信息
'''
d x c s a
count 8
unique 7
top 1 2 3 4 5
freq 2
'''
四、读写csv文件
from io import StringIO,BytesIO
data=('col1,col2,col3\n'
'x,y,1\n'
'a,b,2\n'
'c,d,3\n')
print(data)
'''结果:
col1,col2,col3
x,y,1
a,b,2
c,d,3
'''
type(data)
#结果:str
pd.read_csv(StringIO(data))
'''结果:
col1 col2 col3
0 x y 1
1 a b 2
2 c d 3
'''
df=pd.read_csv(StringIO(data))
'''结果:
col1 col2 col3
0 x y 1
1 a b 2
2 c d 3
'''
df.to_csv('Test.csv')#写回文件
df=pd.read_csv(StringIO(data),dtype=object)#类型定义为object
'''结果:
col1 col2 col3
0 x y 1
1 a b 2
2 c d 3
'''
df['col1']#访问col1列
'''结果:
0 x
1 a
2 c
Name: col1, dtype: object
'''
df['col1'][1]访问col1列第1个
#结果:'a'
df.dtypes#df的类型
'''结果:
col1 object
col2 object
col3 object
dtype: object
'''
type(df['col1'][1])#col1列的第一个的类型
#结果:str
data=('a,b,c\n'
'4,apple,bat,\n'
'8,orange,cow,\n')
pd.read_csv(StringIO(data))#读成csv文件
'''结果:会出现无法对齐的情况,以下有两种方法可以对齐
a b c
4 apple bat NaN
8 orange cow NaN
'''
data=('a,b,c\n'
'4,apple,bat\n'
'8,orange,cow\n')#把bat,cow后面的逗号去掉
'''结果:
a b c
0 4 apple bat
1 8 orange cow
'''
pd.read_csv(StringIO(data),index_col=False)#第一行不认为索引
'''结果:
a b c
0 4 apple bat
1 8 orange cow
'''
pd.read_csv(StringIO(data),usecols=['b','c'],index_col=False)#枚举b列和c列
'''结果:
b c
0 apple bat
1 orange cow
'''
data='a,b\n"hello,\\"Bob\\",nice to see you",5'
#结果:'a,b\n"hello,\\"Bob\\",nice to see you",5'
pd.read_csv(StringIO(data),escapechar='\\')#去除反斜杠
'''结果:
a b
0 hello,"Bob",nice to see you 5
'''
pd.read_csv(StringIO(data),escapechar=',')#去除逗号
'''结果:
ab
0 hello\Bob\"nice to see you"5
'''
'''