ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【01】DataFrame的创建和属性 [打印本页]

作者: 王國慶    时间: 2024-10-10 17:03
标题: 【01】DataFrame的创建和属性
DataFrame是一个表格型的数据结构,可以看成就是excel中的表格。
官方文档:https://pandas.pydata.org/docs/reference/frame.html
DataFrame的创建

DataFrame构造方法如下:
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
一维列表创建DataFrame

  1. import pandas as pd
  2. # 例1:单个列表创建
  3. data = ["张三", "李四", "王五", "赵六"]
  4. df = pd.DataFrame(data=data)
  5. df
复制代码
二维列表创建DataFrame

  1. import pandas as pd
  2. # 例2:二维列表创建DataFrame,设置列索引
  3. data =[['Alex',10], ['Bob', 12], ['clarke', 13]]
  4. df = pd.DataFrame(data=data, columns=['Name', 'Age'])
  5. df
复制代码
通报字典创建DataFrame

  1. import pandas as pd
  2. # 使用默认的行索引,注意:传入字典时字典的KEY成了列索引
  3. data = {'Name': ['Tom', 'Jack', 'steve', 'Ricky'], 'Age': [28, 34, 29, 42]}
  4. df = pd.DataFrame(data)
  5. print(df)
  6. print("*" * 50)
  7. # 设置了行索引
  8. data = {'Name': ['Tom', 'Jack', 'steve', 'Ricky'], 'Age': [28, 34, 29, 42]}
  9. df = pd.DataFrame(data, index=['rank1', 'rank2', 'rank3', 'rank4'])
  10. print(df)
复制代码
通报字典列表创建DataFrame

  1. import pandas as pd
  2. data = [{'姓名': '张三', '性别': '男'}, {'姓名': '小红', '性别': '女', '语文': 80}]
  3. # 传递字典列表来创建DataFrame
  4. df = pd.DataFrame(data)
  5. print(df)
  6. print('*' * 50)
  7. # 传递字典列表和行索引来创建DataFrame
  8. df = pd.DataFrame(data, index=['first', 'second'])
  9. print(df)
  10. print('*' * 50)
  11. # 指定的列索引与字典键相同
  12. df = pd.DataFrame(data, index=['first', 'second'], columns=['姓名', '性别'])
  13. print(df)
  14. print('*' * 50)
  15. # 指定的列索引,其中一个索引具有其他名称
  16. df = pd.DataFrame(data, index=['first', 'second'], columns=['姓名', '班级'])
  17. print(df)
复制代码
通过Series对象创建

  1. import pandas as pd
  2. df1 = pd.Series({'california': 423967, 'Texas': 695662, 'New York': 141297, 'Florida': 170312, 'Illinois': 149995})
  3. df2 = pd.Series({'california': 383521, 'Texas': 264193, 'New York': 191127, 'Florida': 195860, 'Illinois': 122135})
  4. # 创建单列的DataFrame
  5. df = pd.DataFrame(df1, columns=['area'])
  6. print(df)
  7. print("*" * 50)
  8. # 创建多列的DataFrame对象
  9. df = pd.DataFrame({'area': df1, 'population': df2})
  10. print(df)
复制代码
通过Numpy创建 

  1. import pandas as pd
  2. import numpy as np
  3. a = np.random.randint(1, 10, (3, 2))
  4. # 基于a数组建立DataFrame
  5. df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
  6. print(df)
复制代码
DataFrame的属性

dataframe.T

df.T属性主要用来转置行和列,和 df.transpose() 实现的效果一样。
  1. import pandas as pd
  2. import numpy as np
  3. a = np.random.randint(1, 10, (3, 2))
  4. # 基于a数组建立DataFrame
  5. df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
  6. print(df)print("*" * 50)print(df.T)
复制代码
dataframe.axes

返回包含行索引和列索引的列表,可以通过 df.axes[0].tolist() 或 list(df.axes[0]) 转成行索引列表,列索引列表同理。
  1. import pandas as pd
  2. import numpy as np
  3. a = np.random.randint(1, 10, (3, 2))
  4. # 基于a数组建立DataFrame
  5. df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
  6. print(df)print("*" * 50)print(df.axes)  # [Index(['a', 'b', 'c'], dtype='object'), Index(['foo', 'bar'], dtype='object')]print(df.axes[0].tolist())  # ['a', 'b', 'c']print(list(df.axes[0]))  # ['a', 'b', 'c']
复制代码
dataframe.dtypes

查看每列的数据范例。
  1. import pandas as pd
  2. import numpy as np
  3. a = np.random.randint(1, 10, (3, 2))
  4. # 基于a数组建立DataFrame
  5. df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
  6. print(df)print("*" * 50)print(df.dtypes)
复制代码
dataframe.ndim

获取DataFrame的维数。
  1. import pandas as pd
  2. import numpy as np
  3. a = np.random.randint(1, 10, (3, 2))
  4. # 基于a数组建立DataFrame
  5. df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
  6. print(df)print("*" * 50)print(df.ndim)  # 2
复制代码
dataframe.shape

获取DataFrame的行数和列数,是一个元组。
  1. import pandas as pd
  2. import numpy as np
  3. a = np.random.randint(1, 10, (3, 2))
  4. # 基于a数组建立DataFrame
  5. df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
  6. print(df)print("*" * 50)print(df.shape)  # (3, 2)
复制代码
dataframe.size

返回DataFrame中的元素个数。
  1. import pandas as pd
  2. import numpy as np
  3. a = np.random.randint(1, 10, (3, 2))
  4. # 基于a数组建立DataFrame
  5. df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
  6. print(df)print("*" * 50)print(df.size)  # 6
复制代码
dataframe.values

返回一个全部行数据组成的二维的数组,每个元素是一个一维数组(也就是一行数据),可以通过 list(df.values) 或 df.values.tolist() 转成python的列表范例。
  1. import pandas as pd
  2. import numpy as np
  3. a = np.random.randint(1, 10, (3, 2))
  4. # 基于a数组建立DataFrame
  5. df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
  6. print(df)print("*" * 50)print(df.values)  # [[8 6] [3 3] [8 7]]print(list(df.values))  # [array([8, 6], dtype=int32), array([3, 3], dtype=int32), array([8, 7], dtype=int32)]print(df.values.tolist())  # [[8, 6], [3, 3], [8, 7]]
复制代码
dataframe.index

获取行索引,返回的是Index范例,可以通过 list(df.index) 或 df.index.tolist() 转换成列表。
  1. import pandas as pd
  2. import numpy as np
  3. a = np.random.randint(1, 10, (3, 2))
  4. df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
  5. print(df)
  6. print("*" * 50)
  7. print(df.index)  # Index(['a', 'b', 'c'], dtype='object')
  8. print(df.index.values)  # ['a' 'b' 'c']
  9. print(list(df.index))  # ['a', 'b', 'c']
  10. print(df.index.tolist())  # ['a', 'b', 'c']
复制代码
dataframe.columns



获取列索引,返回的是Index范例,可以通过 list(df.columns) 或 df.columns.tolist() 转换成列表。
  1. import pandas as pd
  2. import numpy as np
  3. a = np.random.randint(1, 10, (3, 2))
  4. df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
  5. print(df)
  6. print("*" * 50)
  7. print(df.columns)  # Index(['foo', 'bar'], dtype='object')
  8. print(df.columns.values)  # ['foo' 'bar'],可用 df.columns.values.tolist() 转换成列表
  9. print(list(df.columns))  # ['foo', 'bar']
  10. print(df.columns.tolist())  # ['foo', 'bar']
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4