dataframe数据常用python操作

dataframe数据常用python操作


dataframe数据常用知识点

DataFrame是Python中pandas库中一个非常重要的数据结构,它类似于电子表格或SQL表格,可以存储和操作带标签的二维数据。DataFrame的重要知识点如下:

  • 1.创建DataFrame:可以通过读取外部文件、手动创建或从其他数据结构中创建DataFrame。常用的函数包括pandas.DataFrame()、pandas.read_csv()、pandas.read_excel()等。

  • 2.DataFrame数据存取:可以通过不同的函数保存到txt、csv、excel等文件中,同样也可以利用不同的函数从不同的文件中读取数据。常用的函数包括.to_csv()、.to_excel()等。

  • 3.数据查看和选择:可以使用.head()和.tail()方法查看前几行和后几行数据,使用.iloc[]和.loc[]方法选择数据。

  • 4.数据查询:常见的 DataFrame 查询操作包括条件查询、模糊查询和多条件查询等。

  • 5.数据清洗:包括数据的缺失值处理、重复值处理、数据类型转换等。常用的函数包括dropna()、fillna()、drop_duplicates()、astype()等。

  • 6.数据运算:可以进行多种数据运算,包括列之间的运算、行之间的运算、元素级运算等。常用的运算包括加减乘除、apply()、groupby()、merge()等。

  • 7.时间序列操作:pandas提供了多种时间序列处理和分析的工具,包括resample()、rolling()等。这些工具可以用于处理时间序列数据,如时间序列数据的重采样、平滑处理等。

  • 8.数据可视化:可以使用pandas自带的可视化工具进行数据可视化。常用的函数包括plot()、hist()、boxplot()等。此外,还有其他专业的可视化库(如matplotlib和seaborn)。

总之,DataFrame是Python中非常重要的数据结构之一,可以用于处理和分析各种类型的数据,掌握这些知识点可以更好地使用DataFrame进行数据处理和分析。


1.创建dataframe

三种常用的创建DataFrame的方式,分别是使用字典、列表和numpy数组:

1.1使用字典创建DataFrame:

  • 1.直接转换,字典所有的key均为列
import pandas as pd

#创建字典
data = {
   'name': ['Tom', 'Jack', 'Steve', 'Lucky'], 
        'age': [28, 14, 19, 22], 
        'gender': ['M', 'M', 'M', 'F']}

#将字典转换成DataFrame
df = pd.DataFrame(data)

#打印DataFrame
print(df)
  • 2.字典所有的key为数据框的索引(index),值转换为数据框的列

可以通过pd.DataFrame.from_dict()将字典的键转换为数据框的索引(index),将字典的值转换为数据框的列,然后使用columns参数为列指定名称。

import pandas as pd

# 创建一个示例字典
data = {
   'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}

# 将字典转换为数据框,键为index,值为列,列名为A、B、C
df = pd.DataFrame.from_dict(data, orient='index', columns=['col1', 'col2', 'clo3'])
print(df)

在上面的代码中,orient='index’参数指定将字典的键用作索引(即行标签),将字典的值用作列。通过columns参数指定列的名称。输出:

   col1 col2 col3
A  1  4  7
B  2  5  8
C  3  6  9

1.2使用列表创建DataFrame:

import pandas as pd

#创建列表
data = [['Tom', 28, 'M'], ['Jack', 14, 'M'], ['Steve', 19, 'M'], ['Lucky', 22, 'F']]

#将列表转换成DataFrame
df = pd.DataFrame(data, columns=['name', 'age', 'gender'])

#打印DataFrame
print(df)

1.3使用numpy数组创建DataFrame:

import pandas as pd
import numpy as np

#创建numpy数组
data = np.array([['Tom', 28, 'M'], ['Jack', 14, 'M'], ['Steve', 19, 'M'], ['Lucky', 22, 'F']])

#将numpy数组转换成DataFrame
df = pd.DataFrame(data, columns=['name', 'age', 'gender'])

#打印DataFrame
print(df)

实际应用中,还可以通过读取外部文件、从数据库中读取数据等方式创建DataFrame:

上次学习了python数据的存取,我们先将上面的dataframe数据分别存到txt、csv、excel文件中:

import pandas as pd

df.to_csv('./data/data_df.txt', index=False, sep='\t')#保存到txt
df.to_csv('./data/data_df.csv', index=False, sep='\t')#保存到csv

#保存到excel
writer = pd.ExcelWriter('./data/data_df.xlsx')
df.to_excel(writer, index=False, sheet_name='Sheet1')
writer.save()

再分别从不同的外部文件中读取数据:

1.4从TXT文件中创建DataFrame:

import pandas as pd

从CSV文件中读取数据
df = pd.read_csv('./data/data_df.txt')

# 打印DataFrame
print(df)

1.5从CSV文件中创建DataFrame:

import pandas as pd

从CSV文件中读取数据
df = pd.read_csv('./data/data_df.csv')

# 打印DataFrame
print(df)

1.6从Excel文件中创建DataFrame:

import pandas as pd

#从Excel文件中读取数据
df = pd.read_excel('./data/data_df.xlsx')

#打印DataFrame
print(df)

此外还可以从MySQL数据库中创建DataFrame:

import pandas as pd
import mysql.connector

#连接MySQL数据库
cnx = mysql.connector.connect(user='root', password='password', host='127.0.0.1', database='test')

#从数据库中读取数据
df = pd.read_sql('SELECT * FROM data', con=cnx)

#关闭数据库连接
cnx.close()

#打印DataFrame
print(df)

上面这些是在实际应用中如何直接创建或通过读取外部文件、从数据库中读取数据等方式创建DataFrame。需要注意的是,不同的数据格式和数据源需要使用不同的读取函数,例如读取JSON文件需要使用pd.read_json()函数,读取SQLite数据库需要使用pd.read_sqlite()函数等等。同时,对于一些大型数据集,可以使用分块读取的方式进行处理,以避免内存不足的问题。

2.dataframe数据保存

  • 保存Dataframe到txt文件
import pandas as pd

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

data_df = pd.DataFrame(data)
data_df.to_csv('data_df.txt', index=False, sep='\t')
  • 保存Dataframe到csv文件
import pandas as pd

data = {
   'name': ['apple', 'banana', 'orange'], 'price': [1, 2, 3]}
data_df = pd.DataFrame(data)
data_df.to_csv('data_df.csv', index=False)
  • 保存Dataframe到Excel文件
import pandas as pd

data = {
   'name': ['apple', 'banana', 'orange'], 'price': [1, 2, 3]}
data_df = pd.DataFrame(data)
writer = pd.ExcelWriter('data_df.xlsx')
data_df.to_excel(writer, index=False, sheet_name='Sheet1')
writer.save()

3.dataframe数据查看和选择

创建一个dataframe,后续操作均基于这个df进行:

#创建DataFrame
data = {
   'name': ['Tom', 'Jack', 'Steve', 'Lucky'], 
        'age': [28, 14, 19, 22], 
        'gender': ['M', 'M', 'M', 'F']}
df = pd.DataFrame(data)

3.1查看前/后n行:

  • 查看DataFrame的前n行:df.head(n)
#查看前2行数据
print(df.head(2))
  • 查看DataFrame的后n行:df.tail(n)
#查看后2行数据
print(df.tail(2))

3.2选择DataFrame中的某列/某行:

  • 选择DataFrame中的某列:df[‘列名’]
#选择name列
name = df['name']

#打印name列
print(name)
  • 选择DataFrame中的某行: df.loc[n]
#选择第2行
row = df.iloc[1]

# 打印第2行
print(row)

3.3选择DataFrame中的多列/多行

  • 选择DataFrame中的多列:df[[‘列名1’, ‘列名2’]]
# 选择name和age列
cols = df[['name', 'age']]

# 打印name和age列
print(cols)
  • 选择DataFrame中的多行:df.iloc[a:b]
# 选择第2-3行
rows = df.iloc[1:2]

# 打印第2-3行
print(rows)

3.4选择DataFrame中的特定行和列

df.at[行数, ‘列名’]

#选择第2行和name列
cell = df.at[1, 'name']

#打印第2行和name列的值
print(cell)

3.5选择DataFrame中的特定列组成子数据框

#选择name列构成新的子数据框,索引列不变
df_new = df[['name']]

#打印新的子数据框
print(df_new )

4.dataframe数据查询

常见的 DataFrame 查询操作包括条件查询、模糊查询和多条件查询等,下面给出一些示例:

4.1条件查询

假设有一个 DataFrame df,其中有 name、age、gender 等列,可以使用如下方式进行条件查询:

#查询 age 大于等于20 岁的行
df[df['age'] >= 20]

#查询 name 是 'Tom' 的行
df[df['name'] == 'Tom']

4.2模糊查询

模糊查询一般使用 str.contains() 方法,可以匹配包含某个字符串的行。

#查询 name 中包含 'Tom' 的行
df[df['name'].str.contains('Tom')]

#查询 name 中以 'T' 开头的行
df[df['name'].str.startswith('T')]

4.3多条件查询

可以通过 & 和 | 连接多个条件进行查询。

#查询 age 大于等于 20 岁且 gender 是女性的行
df[(df['age'] >= 20) & (df['gender'] == 'F')]

#查询 age 小于 20 岁或者 gender 是男性的行
df[(df['age'] < 20) | (df['gender'] == 'M')]

4.4查询数据框的元素是否在指定列表中

查询数据框的元素是否在指定列表中,若在返回对应的行
isin是pandas库中的一个函数,它用于检查数据框中的每个元素是否存在于给定的列表中。下面是一个示例:

# 使用isin函数选取age列中值为25或27的行
df[df['age'].isin([19,22,27])]

5.dataframe数据预处理

数据清洗是数据分析的重要步骤之一,可以帮助我们提高数据质量和准确性。在Python中,pandas库提供了丰富的函数和方法,可以方便地进行数据清洗和处理。以下是几个常用的数据清洗示例:

5.1删除缺失值

  • (1)删除含有缺失值的行:df.dropna()默认为行
import pandas as pd

#创建含有缺失值的DataFrame
data = {
   'name': ['Tom', 'Jack', 'Steve', 'Lucky'], 
        'age': [28, None, 19, 22], 
        'gender': ['M', 'M', None, 'F']}
df = pd.DataFrame(data)

#查看含有缺失值的行
null_rows = df[df.isnull().any(axis=1)]
print('含有缺失值的行为:',null_rows)

#删除含有缺失值的行
df = df.dropna()

#查看删除后的DataFrame数据
print('删除缺失数行后的DataFrame数据为:')
print(df)
  • (2)删除含有缺失值的列:df.dropna(axis=1)
#查看含有缺失值的列
print('含有缺失值的列为:')
print(df.isnull().any())

#删除含有缺失值的列
df = df.dropna(axis=1)

#查看删除后的DataFrame数据
print('删除缺失数列后的DataFrame数据为:')
print(df)
  • (3)删除DataFrame中缺失值达到一定比例的列:
import pandas as pd

#创建一个示例数据框
df = pd.DataFrame({
   
    'A': [1, 2, 3, 4, 5],
    'B': [5, 4, 3, 2, 1],
    'C': [1, 2, 3, None, None],
    'D': [None, None, None, None, None],
    'E': [None, 1, 2, 3, 4]
})

#计算每一列中缺失值的比例
na_ratio = df.isna().sum
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值