【Python】数据分析:如何使用 Pandas 的功能

原文作者:我辈李想
版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。



前言

Pandas 是一个 Python 数据分析库,提供了强大的数据处理和分析功能,包括数据读取、清洗、转换、合并、分析、统计和可视化等。
需要练习pandas相关功能。可以在这个网址:教你如何使用Pandas做数据分析


一、Pandas 的常见功能

1.读取和保存数据:Pandas 可以读取多种格式的文件,如 CSV、Excel、JSON 等,并将其转换成 DataFrame 对象进行操作。可以使用 read_csv()、read_excel()、read_json() 等方法来读取数据,使用 to_csv()、to_excel()、to_json() 等方法来保存数据。

2.数据选择和操作:Pandas 可以使用不同的索引方式选择数据,如整数索引、标签索引等。DataFrame 对象支持多种常见的操作,如过滤、排序、聚合等。可以使用 loc[]、iloc[]、isin()、sort_values()、groupby() 等方法来进行操作。

3.数据清洗和转换:Pandas 可以处理缺失值、重复值、异常值等数据清洗任务。可以使用 dropna()、fillna()、drop_duplicates() 等方法来清洗数据。可以使用 apply()、map() 等方法对数据进行转换。

4.数据可视化:Pandas 可以使用常见的数据可视化库(如 Matplotlib、Seaborn)来可视化数据。可以使用 DataFrame 的 plot() 方法来绘制图表。

5.时间序列分析:Pandas 支持时间序列数据处理和分析,如时间戳转换、日期范围生成、时间移动、时间重采样等。可以使用 to_datetime()、date_range()、shift()、resample() 等方法来处理时间序列数据。

6.其他功能:Pandas 还包括一些其他有用的功能,如合并、连接、透视表等。可以使用 concat()、merge()、pivot_table() 等方法来完成这些任务。

二、Pandas 的基本操作

1.导入 Pandas 库

import pandas as pd

2.读入数据文件

data = pd.read_csv('filename.csv')

3.查看数据

data.head() # 查看前五行
data.tail() # 查看后五行
data.info() # 查看数据信息
data.describe() # 查看数据统计信息

4.选择列和行

  1. 指定行列

     data['column'] # 选择指定列
    
  2. loc[]:通过标签选择数据

     data.loc['A'] # 选择指定行,index为a
     data.loc['A', 'column'] # 选择指定行和列,index为a,column为column
     data.loc[['A','B'], '年龄'] # 选择指定多行和列
    
  3. iloc[]:通过位置选择数据

     data.iloc[0] # 选择指定行
     data.iloc[0,1] # 选择指定行和列
     data.iloc[0:10, 1] # 选择指定多行和列
    

5.过滤数据

data[data['column'] > 0] # 根据条件过滤数据
query_result = df[df['name'].str.contains('a')] # 使用str.contains()方法查询name列包含字母"a"的行
query_result = df[(df['color'] == 'orange') & (df['price'] < 1.0)] # 多条件查询示例:&与,|或
data.sort_index(axis=1,ascending=False) # 按照索引排序
data.sort_values(['A','B'],ascending=False) # 按照值排序

6.修改数据

data['new_column'] = data['column1'] + data['column2'] # 添加新列
data.drop(columns=['column']) # 删除指定列

7.合并数据

pd.concat([data1, data2]) # 沿行或列方向合并数据
data1.merge(data2, on='column', how='inner') # 按指定列合并数据

8.统计数据

data['column'].mean() # 求平均值
data['column'].sum() # 求和
data['column'].max() # 求最大值
data['column'].min() # 求最小值

9.可视化数据

import matplotlib.pyplot as plt
data['column'].plot(kind='hist') # 绘制直方图
data.plot(kind='scatter', x='column1', y='column2') # 绘制散点图

三、pandas的进阶

1.创建:字典、列表、文件、数据库

示例:创建空dataframe

import pandas as pd

df = pd.DataFrame()
print(df)

示例:使用字典创建DataFrame

import pandas as pd

data = {'姓名': ['张三', '李四', '王五', '赵六'],
        '年龄': [20, 23, 25, 28],
        '性别': ['女', '男', '女', '男']}
df = pd.DataFrame(data,index=['A', 'B', 'C', 'D'])
print(df)

示例:使用列表创建DataFrame1

import pandas as pd

names = ['张三', '李四', '王五', '赵六']
scores = [80, 90, 70, 85]

df = pd.DataFrame({'姓名': names, '成绩': scores})
print(df)

示例:使用列表创建DataFrame2

import pandas as pd
data = [['张三', 20], ['李四', 25], ['王五', 30]]

df = pd.DataFrame(data, columns=['姓名', '年龄'])
print(df)

示例:从文件创建DataFrame

import pandas as pd

df = pd.read_csv('data.csv')
print(df)

示例:从数据库中创建DataFrame

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine('mysql+pymysql://username:password@localhost/mydatabase')

df = pd.read_sql('SELECT * FROM mytable', engine)
print(df)

需要替换username、password和mydatabase为相应的值,并且需要安装sqlalchemy和pymysql库。

2.遍历:apply、iterrows、itertuples、for

示例:使用apply方法遍历

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'],
        'age': [25, 30, 35],
        'gender': ['F', 'M', 'M']}
df = pd.DataFrame(data)

# 使用apply方法遍历行
def process_row(row):
    return row['name'] + ' is ' + str(row['age']) + ' years old and is ' + row['gender']

df['summary'] = df.apply(process_row, axis=1)
print(df['summary'])

# 使用apply方法遍历列
def process_column(col):
    return col + ' is a column in the dataframe'

df = df.apply(process_column)
print(df)

# 遍历生成多行
df[['First Name', 'Last Name']] = df['Name'].str.split(',', expand=True)

示例:使用iterrows和itertuples方法遍历行(比apply更高效)

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'],
        'age': [25, 30, 35],
        'gender': ['F', 'M', 'M']}

df = pd.DataFrame(data)

# iterrows遍历行
for index, row in df.iterrows():
    print(index, row['name'], row['age'], row['gender'])

# itertuples遍历列
for row in df.itertuples():
    print(row.Index, row.name, row.age, row.gender)

示例:使用for循环遍历

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'],
        'age': [25, 30, 35],
        'gender': ['F', 'M', 'M']}
df = pd.DataFrame(data)

for index, row in df.iterrows():
    print(row['name'], row['age'], row['gender'])

# 使用for循环遍历列
for col in df.columns:
    print(df[col])

3.修改:lambda匿名函数

data['country'] = data.apply(lambda x: 1 if x.countryName == x.provinceName else 0,axis=1)

其中通过apply遍历,横向(axis=1)一条数据满足provinceName和countryName相等时,新增country列数据为1,否则为0

4.pandas新增一条数据

我们可以使用 loc 方法新增一条数据。假设我们有一个名为 df 的 DataFrame,想要新增一条数据,可以按照以下步骤进行:

  1. 创建一个字典,键为列名,值为新数据。
  2. 使用 loc 方法,在最后一行新增一条数据。

以下是一个例子:

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Cathy'],
    'age': [25, 30, 35]
})

# 新增一条数据
new_data = {'name': 'David', 'age': 28}
df.loc[len(df)] = new_data

print(df)

输出结果为:

    name  age
0  Alice   25
1    Bob   30
2  Cathy   35
3  David   28

以上是 Pandas 的基本用法,根据具体需求,还可以使用一些高级功能和技巧进行数据处理和分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我辈李想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值