pandas基础学习教程笔记 (1)

这篇博客介绍了pandas库的基础知识,包括库的导入、数据的导入导出、创建数据框、查看与检查数据、数据选取以及数据清洗。内容涵盖了创建随机数据框、查看数据框的统计信息、选取特定列、处理缺失值等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pandas基础学习

库的导入

函数说明
df任意的pandas DataFrame(数据框)对象
s任意的pandas Series(数组)对象

pandas和numpy是用Python做数据分析最基础且最核心的库

import pandas as pd # 导入pandas库并简写为pd
import numpy as np # 导入numpy库并简写为np

数据的导入

函数说明
pd.read_csv(filename)导入csv格式文件中的数据
pd.read_table(filename)导入有分隔符的文本 (如TSV) 中的数据
pd.read_excel(filename)导入Excel格式文件中的数据
pd.read_sql(query, connection_object)导入SQL数据表/数据库中的数据
pd.read_json(json_string)导入JSON格式的字符,URL地址或者文件中的数据
pd.read_html(url)导入经过解析的URL地址中包含的数据框 (DataFrame) 数据
pd.read_clipboard()导入系统粘贴板里面的数据
pd.DataFrame(dict)导入Python字典 (dict) 里面的数据,其中key是数据框的表头,value是数据框的内容。

数据的导出

函数说明
df.to_csv(filename)将数据框 (DataFrame)中的数据导入csv格式的文件中
df.to_excel(filename)将数据框 (DataFrame)中的数据导入Excel格式的文件中
df.to_sql(table_name,connection_object)将数据框 (DataFrame)中的数据导入SQL数据表/数据库中
df.to_json(filename)将数据框 (DataFrame)中的数据导入JSON格式的文件中

创建对象

创建一个5列10行的由随机浮点数组成的数据框 DataFrame

pd.DataFrame(np.random.rand(10,5))

从一个可迭代的对象 my_list 中创建一个数据组

my_list = ['Kesci',100,'欢迎来到科赛网']
pd.Series(my_list)
'''
0      Kesci
1        100
2    欢迎来到科赛网
dtype: object
'''

添加一个日期索引 index

df = pd.DataFrame(np.random.rand(10,5))
df.index = pd.date_range('2017/1/1', periods=df.shape[0])
df

数据的查看与检查

查看数据框的前n行

df = pd.DataFrame(np.random.rand(10,5))
df.head(3)

查看数据框的最后n行

df = pd.DataFrame(np.random.rand(10,5))
df.tail(3)

查看数据框的行数与列数

df = pd.DataFrame(np.random.rand(10,5))
df.shape

查看数据框 (DataFrame) 的索引、数据类型及内存信息

df = pd.DataFrame(np.random.rand(10,5))
df.info()
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 5 columns):
0    10 non-null float64
1    10 non-null float64
2    10 non-null float64
3    10 non-null float64
4    10 non-null float64
dtypes: float64(5)
memory usage: 480.0 bytes
'''

对于数据类型为数值型的列,查询其描述性统计的内容

df.describe()

查询每个独特数据值出现次数统计

s = pd.Series([1,2,3,3,4,np.nan,5,5,5,6,7])
s.value_counts(dropna=False)
'''
 5.0    3
 3.0    2
 7.0    1
 6.0    1
 NaN    1
 4.0    1
 2.0    1
 1.0    1
dtype: int64
'''

查询数据框 (Data Frame) 中每个列的独特数据值出现次数统计

df.apply(pd.Series.value_counts)

数据的选取

以数组 Series 的形式返回选取的列

df = pd.DataFrame(np.random.rand(5,5),columns=list('ABCDE'))
df['C']
’‘’
0    0.720965
1    0.360155
2    0.474067
3    0.116206
4    0.774503
Name: C, dtype: float64
‘’‘

以新的数据框(DataFrame)的形式返回选取的列

df = pd.DataFrame(np.random.rand(5,5),columns=list('ABCDE'))
df[['B','E']]
'''
	    B	       E
0	0.205912	0.333909
1	0.475620	0.540206
2	0.144041	0.065117
3	0.636970	0.406317
4	0.451541	0.944245
'''

按照位置选取

s = pd.Series(np.array(['I','Love','Data']))
s.iloc[0]
'''
'I'
'''

按照索引选取

s = pd.Series(np.array(['I','Love','Data']))
s.loc[1]
'''
'Love'
'''

选取第一行

df = pd.DataFrame(np.random.rand(5,5),columns=list('ABCDE'))
df.iloc[0,:]
'''
A    0.234156
B    0.513754
C    0.593067
D    0.856575
E    0.291528
Name: 0, dtype: float64
'''

选取第一行的第一个元素

df = pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))
df.iloc[0,0]
'''
0.91525996455410763
'''

数据的清洗

重命名数据框的列名称

df = pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),
                 'B':np.array([np.nan,4,np.nan,5,9,np.nan]),
                  'C':'foo'})
df.columns = ['a','b','c']
df
'''

	a	b	c
0	1.0	NaN	foo
1	NaN	4.0	foo
2	2.0	NaN	foo
3	3.0	5.0	foo
4	6.0	9.0	foo
5	NaN	NaN	foo
'''

检查数据中空值出现的情况,并返回一个由布尔值(True,Fale)组成的列

df = pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),
                 'B':np.array([np.nan,4,np.nan,5,9,np.nan]),
                  'C':'foo'})
pd.isnull(df)\
'''

	  A	      B	      C
0	False	True	False
1	True	False	False
2	False	True	False
3	False	False	False
4	False	False	False
5	True	True	False
'''

检查数据中非空值出现的情况,并返回一个由布尔值(True,False)组成的列

df = pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),
                 'B':np.array([np.nan,4,np.nan,5,9,np.nan]),
                  'C':'foo'})
pd.notnull(df)
'''
	  A	      B	      C
0	True	False	True
1	False	True	True
2	True	False	True
3	True	True	True
4	True	True	True
5	False	False	True
'''

移除数据框 DataFrame 中包含空值的行

df = pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),
                 'B':np.array([np.nan,4,np.nan,5,9,np.nan]),
                  'C':'foo'})
df.dropna()
'''
	 A	 B	 C
3	3.0	5.0	foo
4	6.0	9.0	foo
'''

移除数据框 DataFrame 中包含空值的列

df = pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),
                 'B':np.array([np.nan,4,np.nan,5,9,np.nan]),
                  'C':'foo'})
df.dropna(axis=1)
'''
	 C
0	foo
1	foo
2	foo
3	foo
4	foo
5	foo
'''

保留含有若干非空值的行或者列可以使用thresh参数

df = pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),
                 'B':np.array([np.nan,4,np.nan,5,9,np.nan]),
                  'C':'foo'})
test = df.dropna(axis=1,thresh=1)
test
'''
     A	 B	 C
0	1.0	NaN	foo
1	NaN	4.0	foo
2	2.0	NaN	foo
3	3.0	5.0	foo
4	6.0	9.0	foo
5	NaN	NaN	foo
'''

将数据框 DataFrame 中的所有空值替换为 x

df = pd.DataFrame({'A':np.array([1,np.nan,2,3,6,np.nan]),
                 'B':np.array([np.nan,4,np.nan,5,9,np.nan]),
                  'C':'foo'})
df.fillna('Test')
'''
    A	  B  	C
0	1	Test   foo
1  Test	 4	   foo
2	2	Test   foo
3	3	 5	   foo
4	6	 9	   foo
5  Test	Test   foo
'''

将所有空值替换为平均值

s = pd.Series([1,3,5,np.nan,7,9,9])
s.fillna(s.mean())
'''
0    1.000000
1    3.000000
2    5.000000
3    5.666667
4    7.000000
5    9.000000
6    9.000000
dtype: float64
'''

将数组(Series)的格式转化为浮点数

s = pd.Series([1,3,5,np.nan,7,9,9])
s.astype(float)
'''
0    1.0
1    3.0
2    5.0
3    NaN
4    7.0
5    9.0
6    9.0
dtype: float64
'''

将数组(Series)中的所有1替换为’one’

s = pd.Series([1,3,5,np.nan,7,9,9])
s.replace(1,'one')
'''
0    one
1      3
2      5
3    NaN
4      7
5      9
6      9
dtype: object
'''

将数组(Series)中所有的1替换为’one’, 所有的3替换为’three’

s = pd.Series([1,3,5,np.nan,7,9,9])
s.replace([1,3],['one','three'])
'''
0      one
1    three
2        5
3      NaN
4        7
5        9
6        9
dtype: object
'''

将全体列重命名

f = pd.DataFrame(np.random.rand(4,4))
df.rename(columns=lambda x: x+ 2)

将选择的列重命名

df = pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))
df.rename(columns={'A':'newA','C':'newC'})
'''
	  newA	        B	      newC	        D	        E
0	0.169072	0.694563	0.069313	0.637560	0.475181
1	0.910271	0.800067	0.676448	0.934767	0.025608
2	0.825186	0.451545	0.135421	0.635303	0.419758
3	0.401979	0.510304	0.014901	0.209211	0.121889
4	0.579282	0.001947	0.036519	0.750415	0.453078
5	0.896213	0.557514	0.028147	0.527471	0.575772
6	0.443222	0.095459	0.319582	0.912069	0.781455
7	0.067923	0.590470	0.602999	0.507358	0.703022
8	0.301491	0.682629	0.283103	0.565754	0.089268
9	0.399671	0.925416	0.020578	0.278000	0.591522
'''

改变索引

df = pd.DataFrame(np.random.rand(10,5),columns=list('ABCDE'))
df.set_index('B')
'''
	        A	        C	        D	        E
B				
0.311742	0.972069	0.557977	0.114267	0.795128
0.931644	0.725425	0.082130	0.993764	0.136923
0.206382	0.980647	0.947041	0.038841	0.879139
0.157801	0.402233	0.249151	0.724130	0.108238
0.314238	0.341221	0.512180	0.218882	0.046379
0.029040	0.470619	0.666784	0.036655	0.823498
0.843928	0.779437	0.926912	0.189213	0.624111
0.282773	0.993681	0.048483	0.135934	0.576662
0.759600	0.235513	0.359139	0.488255	0.669043
0.088552	0.893269	0.277296	0.889523	0.398392
'''

改变全体索引

df = pd.DataFrame(np.random.rand(10,5))
df.rename(index = lambda x: x+ 1)
'''
         0	        1	        2	        3	        4
1	0.386542	0.031932	0.963200	0.790339	0.602533
2	0.053492	0.652174	0.889465	0.465296	0.843528
3	0.411836	0.460788	0.110352	0.083247	0.389855
4	0.336156	0.830522	0.560991	0.667896	0.233841
5	0.307933	0.995207	0.506680	0.957895	0.636461
6	0.724975	0.842118	0.123139	0.244357	0.803936
7	0.059176	0.117784	0.330192	0.418764	0.464144
8	0.104323	0.222367	0.930414	0.659232	0.562155
9	0.484089	0.024045	0.879834	0.492231	0.949636
10	0.201583	0.280658	0.356804	0.890706	0.236174
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值