当前位置:   article > 正文

python dataframe详细使用方法_python pd.dataframe

python pd.dataframe

        dataframe为pandas中的数据格式,通常用来存储时间序列数据,比如K线数据,这在量化分析时通常用到。

        在Python中,可以使用pandas库来创建和操作数据帧(DataFrame)。DataFrame是一个二维数据结构,类似于表格,其中包含了行和列。以下是如何使用pandas创建和操作DataFrame的基本示例。首先,确保已经安装了pandas库。可以使用以下命令来安装:

pip install pandas

然后,在你的代码中导入pandas模块:

import pandas as pd

1 创建dataframe

        创建DataFrame可以有多种方式,其中一种常见的方式是使用字典来创建。每个键表示列名,对应的值是列的数据。例如,创建一个包含学生姓名和对应年龄的DataFrame:

  1. import pandas as pd
  2. df = pd.DataFrame([[1,2,3,4],[5,6,7,8]], columns=['a', 'b', 'c', 'd'])
  3. data = {'Name': ['Alice', 'Bob', 'Charlie'],
  4. 'Age': [20, 21, 19]}
  5. #这将创建一个包含两列的DataFrame,其中第一列是"Name",第二列是"Age"。每一列的数据由对应的值给出。
  6. df = pd.DataFrame(data)

2 读取csv文件为dataframe格式,或保存为csv文件

  1. df = pd.read_csv(data_path)
  2. df.to_csv(data_path, index=False, encoding = 'utf-8')
  3. #index = False表示不保存索引

3 基本数据操作:增删改查

  1. df.columns
  2. df.index
  3. print(df.values)
  4. print(7 in df.values)
  5. # 获取DataFrame的所有列
  6. columns = df.columns
  7. # 获取特定列的数据
  8. name_column = df['Name']
  9. # 获取特定行的数据
  10. row = df.loc[0] # 使用标签索引
  11. # 添加新列
  12. df['Gender'] = ['F', 'M', 'M']
  13. # 删除列
  14. df = df.drop('Age', axis=1)
  15. # 删除行
  16. df = df.drop(0)
  17. # 根据条件筛选数据
  18. filtered_df = df[df['Age'] > 20]

4 行列数量查询

  1. 返回列数:
  2. df.shape[1]
  3. 返回行数:
  4. df.shape[0]
  5. 或者:
  6. len(df)

5 修改行列索引名称与查找

  1. df.index = df['列名']
  2. df.rename(columns={'原名称':'新名称'},inplace=True)
  3. data = {'Name': ['Alice', 'Bob', 'Charlie'],
  4. 'Age': [20, 21, 19]}
  5. df = pd.DataFrame(data, index=['A', 'B', 'C'])

        在DataFrame中,可以使用set_index()方法来设置特定列作为索引。索引是用于标识和访问DataFrame中行的标签。        

        以下是一个示例,展示如何将"Name"列设置为索引:

  1. import pandas as pd
  2. data = {'Name': ['Alice', 'Bob', 'Charlie'],
  3. 'Age': [20, 21, 19]}
  4. df = pd.DataFrame(data)
  5. df = df.set_index('Name')
  6. # 将索引重置为默认的整数索引
  7. df = df.reset_index()
  8. # 打印重置索引后的DataFrame
  9. print("重置索引后的DataFrame:")
  10. print(df)

        在上面的示例中,我们使用set_index()方法将"Name"列作为索引列。这将返回一个新的DataFrame对象,并将"Name"列从原始DataFrame中移除,变成了索引列。
        现在,通过索引列可以直接访问特定的行数据。例如,要获取姓名为"Alice"的行数据,可以使用以下方式:

  1. alice_row = df.loc['Alice']
  2. # 根据索引修改"Age"列的值
  3. df.loc[1, 'Age'] = 22

        在上面的示例中,我们首先创建了一个名为df的DataFrame对象。然后,我们使用.loc[]方法选择索引为1的行和"Age"列,并将其值修改为22。
        通过使用.loc[]方法,我们可以根据索引和列名准确定位到要修改的元素。
        最后,我们打印出修改后的DataFrame,以验证是否成功修改了特定索引位置的"Age"值。
        请注意,.at[]方法也可以用于准确访问和修改单个元素,如果只需修改单个元素,.at[]方法比.loc[]方法更有效

6 iloc索引,整数数值索引

  1. df.iloc[:3, 0:2]
  2. df.iloc[:3, 0:2].values

7 判断是否有缺失值nan

  1. df.isnull().any() 用来判断某列是否有缺失值
  2. df.isnull().all() 用来判断某列是否全部为空值
  3. df.dropna()默认删除了含有缺失值的所有行,如果我们只需要把某一行所有数据为缺失值的才删除,那么需要用how=‘all’进行限制,如df2.dropna(how='all')
  4. 如果要删除DataFrame的缺失值所在的列,那么只需加上axis=1即可

8 排序

8.1 单列排序

df2 = df1.sort_values(by=['列名'], ascending = [True]) #升序排列

        要按照DataFrame中的某一列(例如"Age")进行排序,可以使用sort_values()方法。
        以下是一个示例,展示如何按照"Age"列进行排序:

  1. import pandas as pd
  2. data = {'Name': ['Alice', 'Bob', 'Charlie'],
  3. 'Age': [20, 21, 19]}
  4. df = pd.DataFrame(data)
  5. # 按照"Age"列进行升序排序
  6. df_sorted = df.sort_values('Age')
  7. # 打印排序后的DataFrame
  8. print("根据Age列进行升序排序后的DataFrame:")
  9. print(df_sorted)

        在上面的示例中,我们首先创建了一个名为df的DataFrame对象。然后,我们使用sort_values()方法,并将要排序的列名"Age"作为参数传递给它。
        默认情况下,sort_values()方法将按照指定列的值进行升序排序。排序后,会返回一个新的已排序的DataFrame对象。
        最后,我们打印出排序后的DataFrame,以验证是否按照"Age"列进行了升序排序。
        如果你想按照降序进行排序,可以将 ascending=False 作为参数传递给sort_values()方法。

8.2 多列排序

        要根据DataFrame中的两列进行排序,您可以使用sort_values()方法。以下是一个示例:

  1. import pandas as pd
  2. # 创建示例DataFrame
  3. data = {'A': [1, 2, 3, 4, 5],
  4. 'B': [10, 9, 8, 7, 6]}
  5. df = pd.DataFrame(data)
  6. # 根据列A和列B进行排序
  7. df_sorted = df.sort_values(by=['A', 'B'])
  8. # 打印排序后的结果
  9. print(df_sorted)

        在上面的示例中,我们首先创建了一个示例的DataFrame df,其中包含两列A和B。
        然后,我们使用sort_values()方法对DataFrame进行排序。在by参数中,我们传递一个列表,指定要根据哪些列进行排序。在这个例子中,我们根据列A和列B进行排序。
        最后,我们打印了排序后的结果。
        请注意,sort_values()方法返回一个新的已排序的DataFrame,原始的DataFrame不会被修改。如果您希望就地修改原始的DataFrame,可以传递inplace=True参数,例如:df.sort_values(by=['A', 'B'], inplace=True)。
        排序时,默认情况下按升序进行排序。如果您想要降序排序,可以将参数ascending=False传递给sort_values()方法,例如:df.sort_values(by=['A', 'B'], ascending=False)。

9 交集并集补集

  1. df1 = DataFrame([['a', 10, '男'],
  2. ['b', 11, '男'],
  3. ['c', 11, '女'],
  4. ['a', 10, '女'],
  5. ['c', 11, '男']],
  6. columns=['name', 'age', 'sex'])
  7. df2 = DataFrame([['a', 10, '男'],
  8. ['b', 11, '女']],
  9. columns=['name', 'age', 'sex'])
  10. 取交集:print(pd.merge(df1,df2,on=['name', 'age', 'sex']))
  11. 取并集:print(pd.merge(df1,df2,on=['name', 'age', 'sex'], how='outer'))
  12. 取差集(从df1中过滤df1在df2中存在的行):
  13. df1 = df1.append(df2)
  14. df1 = df1.append(df2)
  15. df1 = df1.drop_duplicates(subset=['name', 'age', 'sex'],keep=False)
  16. print(df1)

10 复制DataFrame

        可以使用copy()方法创建原始DataFrame的副本。这样做可以确保完全复制数据和索引,而不仅是引用。以下是一个示例,展示如何根据索引复制DataFrame:

  1. import pandas as pd
  2. data = {'Name': ['Alice', 'Bob', 'Charlie'],
  3. 'Age': [20, 21, 19]}
  4. df = pd.DataFrame(data)
  5. # 复制DataFrame
  6. df_copy = df.copy()
  7. # 打印原始DataFrame和副本
  8. print("原始DataFrame:")
  9. print(df)
  10. print()
  11. print("复制的DataFrame:")
  12. print(df_copy)

11 将sqlite3数据库中内容读取为dataframe

  1. import sqlite3
  2. import pandas as pd
  3. # 连接到SQLite数据库
  4. conn = sqlite3.connect('example.db')
  5. # 使用SQL查询语句获取数据并将其存储在DataFrame中
  6. query = "SELECT * FROM your_table_name;"
  7. df = pd.read_sql_query(query, conn)
  8. # 打印DataFrame
  9. print(df)
  10. # 关闭数据库连接
  11. conn.close()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/153067
推荐阅读
相关标签
  

闽ICP备14008679号