Python数据挖掘Pandas详解攻略
什么是Pandas
Pandas是基于NumPy的一个开源数据分析和数据挖掘库,使用Python编程语言进行开发。Pandas提供了快速、灵活、简单的数据结构,能够方便地处理结构化、时间序列以及未结构化的数据。
安装Pandas
在安装Pandas之前,需要确认Python版本已经安装。可以通过运行以下命令检查Python版本:
python --version
如果Python版本在3.6及以上,可以使用以下命令安装Pandas:
pip install pandas
Pandas基本概念
Pandas中有两个重要的数据结构:Series和DataFrame。
- Series:是一种一维的数据结构,类似于数组或列表。每个元素都有一个与之相关的标签(label),称为索引。
- DataFrame:是一种二维的表格数据结构,每列数据可以是不同的数据类型。就像一个Excel表格一样,DataFrame也有行索引和列索引。
创建Series和DataFrame
可以使用Pandas提供的方法来创建Series和DataFrame。例如,可以使用以下代码创建一个Series:
import pandas as pd
s = pd.Series([1, 2, 3, 4, 5])
可以使用以下代码创建一个DataFrame:
import pandas as pd
data = {'name': ['Amy', 'Bob', 'John', 'Mike'], 'age': [21, 22, 30, 25]}
df = pd.DataFrame(data)
Series操作
可以使用Pandas提供的方法来对Series进行操作。例如,可以使用以下代码获取Series的元素:
import pandas as pd
s = pd.Series([1, 2, 3, 4, 5])
s[0] # 获取第一个元素
s[1:3] # 获取第二个和第三个元素
s.loc[[0, 1, 3]] # 通过标签获取元素
还可以使用其他方法,例如求和、平均值等:
import pandas as pd
s = pd.Series([1, 2, 3, 4, 5])
s.sum() # 求和
s.mean() # 求平均值
s.std() # 求标准差
DataFrame操作
和Series相比,DataFrame提供了更多的方法来操作数据。可以使用以下代码获取DataFrame的行和列:
import pandas as pd
data = {'name': ['Amy', 'Bob', 'John', 'Mike'], 'age': [21, 22, 30, 25]}
df = pd.DataFrame(data)
df.head() # 获取前几行数据,默认是5行
df.tail() # 获取后几行数据,默认是5行
df['name'] # 获取name列
df.loc[0:2, ['name', 'age']] # 获取前3行的name和age列
还可以对DataFrame进行排序、删除和合并等操作:
import pandas as pd
data1 = {'name': ['Amy', 'Bob', 'John', 'Mike'], 'age': [21, 22, 30, 25]}
data2 = {'name': ['John', 'Mike', 'Jack'], 'salary': [5000, 6000, 3500]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
df = pd.merge(df1, df2, on='name', how='inner') # 根据name列进行内部合并
df = df.sort_values(by='age', ascending=False) # 根据age列进行降序排序
df = df.drop(columns=['salary']) # 删除salary列
示例说明
示例1:数据清洗
假设有一份销售数据,包含4列数据:日期、产品名称、销售数量和销售额。数据中存在空值和异常值,需要进行数据清洗。
import pandas as pd
data = {'date': ['2021/07/07', '2021/07/07', '2021/07/08', '2021/07/09', '2021/07/10', '2021/07/11'],
'product': ['productA', 'productB', 'productC', 'productD', 'productE', 'productF'],
'quantity': [10, 5, 30, None, 20, 15],
'amount': [100, 50, 150, 1000, 200, None]}
df = pd.DataFrame(data)
首先可以使用以下代码删除空值:
df = df.dropna()
然后可以使用以下代码删除异常值:
df = df[df['quantity'] > 0] # 销售数量必须大于0
df = df[df['amount'] > 0] # 销售额必须大于0
示例2:数据分析
假设有一份在线教育平台的学生数据,包含4列数据:学生ID、学生姓名、所在城市和课程名称。需要分析不同城市的学生数量和不同课程的学生数量。
import pandas as pd
data = {'id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'name': ['Amy', 'Bob', 'John', 'Mike', 'Lucy', 'Lily', 'Tom', 'Jack', 'Kevin', 'Emma'],
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Beijing', 'Shanghai', 'Guangzhou', 'Beijing', 'Shanghai', 'Guangzhou', 'Beijing'],
'course': ['Python', 'Python', 'Python', 'Java', 'Java', 'Java', 'C++', 'C++', 'C++', 'C#']}
df = pd.DataFrame(data)
可以使用以下代码统计不同城市的学生数量:
df_city = df.groupby('city').count()['id']
可以使用以下代码统计不同课程的学生数量:
df_course = df.groupby('course').count()['id']
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python数据挖掘Pandas详解 - Python技术站