1. 创建Series对象

1、 列表生成Series

  1. import pandas as pd
  2. import numpy as np
  3. a = pd.Series([3, 2, 4, 1, 5])
  4. print(a)
  5. print(a.values)
  6. print(a.index)
  7. 0 3
  8. 1 2
  9. 2 4
  10. 3 1
  11. 4 5
  12. dtype: int64
  13. [3 2 4 1 5]
  14. RangeIndex(start=0, stop=5, step=1)

2、 新建Series时指定索引

  1. b = pd.Series([3, 2, 4, 1, 5], index=('b', 'a', 'd', 'w', 'y'))
  2. print(b)
  3. print(b.values)
  4. print(b.index)
  5. b 3
  6. a 2
  7. d 4
  8. w 1
  9. y 5
  10. dtype: int64
  11. [3 2 4 1 5]
  12. Index(['b', 'a', 'd', 'w', 'y'], dtype='object')

3、 从Numpy数组生成Series

index默认值是整数序列:Series通用的Numpy数组,Numpy是隐式索引值

  1. a = np.arange(3)
  2. b = pd.Series(a)
  3. print(b)
  4. 0 0
  5. 1 1
  6. 2 2
  7. dtype: int32

4、 从标量生成Series

标量生成Series,index默认值是整数序列

  1. print(pd.Series(4, index=[100, 200, 300]))
  2. 100 4
  3. 200 4
  4. 300 4
  5. dtype: int64

5、 字典生成Series

index是字典键;Series是特殊的字典,字典键是Series的索引

  1. population_dict = {'a': 12, 'b': 25, 'c': 56, 'd': 67, 'e': 42}
  2. print("population_dict:\n", population_dict)
  3. population = pd.Series(population_dict)
  4. print("population:\n", population)
  5. population_dict:
  6. {'a': 12, 'b': 25, 'c': 56, 'd': 67, 'e': 42}
  7. population:
  8. a 12
  9. b 25
  10. c 56
  11. d 67
  12. e 42
  13. dtype: int64

6、 通过指定索引值生成Series

  1. print(pd.Series({2: 'a', 1: 'b', 3: 'c'}, index=[3, 1, 2]))
  2. print(pd.Series(population, index=['a', 'd']))
  3. 3 c
  4. 1 b
  5. 2 a
  6. dtype: object
  7. a 12
  8. d 67
  9. dtype: int64

7、 使用DataFrame的一列映射Series数据

  1. print(cities['area'])
  2. a 12
  3. b 25
  4. c 56
  5. d 67
  6. e 42
  7. Name: area, dtype: int64


2. 创建DateFrame对象

1、 通过单个Series对象创建

  1. import numpy as np
  2. import pandas as pd
  3. # 通过单个Series对象创建
  4. a = np.arange(3)
  5. b = pd.Series(a)
  6. print(pd.DataFrame(b))
  7. 0
  8. 0 0
  9. 1 1
  10. 2 2

2、典键值总是对应列名

  1. data = [{'a': 12, 'b': 25}, {'a': 56, 'b': 67}]
  2. print(pd.DataFrame(data))
  3. a b
  4. 0 12 25
  5. 1 56 67

3、 有规律的创建

  1. data = [{'a': i, 'b': 2 * i} for i in range(3)]
  2. print(pd.DataFrame(data))
  3. a b
  4. 0 0 0
  5. 1 1 2
  6. 2 2 4

4、 创建时有缺失值处理

创建时数据有缺失值时,缺失值一般用NaN(Not a Number)表示

  1. data = [{'a': 12, 'b': 25}, {'a': 56, 'c': 67}]
  2. print(pd.DataFrame(data))
  3. a b c
  4. 0 12 25.0 NaN
  5. 1 56 NaN 67.0

5、 使用Series对象字典创建

  1. population_dict = {'a': 12, 'b': 25, 'c': 56, 'd': 67, 'e': 42}
  2. print("population_dict:\n", population_dict)
  3. population = pd.Series(population_dict)
  4. print(pd.DataFrame(population))
  5. population_dict:
  6. {'a': 12, 'b': 25, 'c': 56, 'd': 67, 'e': 42}
  7. 0
  8. a 12
  9. b 25
  10. c 56
  11. d 67
  12. e 42

6、 使用不同类型数据创建

使用字典作为其中一列数据,Series对象字典作为另一列数据进行创建

  1. print(population_dict)
  2. print(population)
  3. cities = pd.DataFrame({'area': population_dict, 'bb': population})
  4. print(cities)
  5. {'a': 12, 'b': 25, 'c': 56, 'd': 67, 'e': 42}
  6. a 12
  7. b 25
  8. c 56
  9. d 67
  10. e 42
  11. dtype: int64
  12. area bb
  13. a 12 12
  14. b 25 25
  15. c 56 56
  16. d 67 67
  17. e 42 42

7、 使用二维数组创建

  1. print('通过二维数组创建')
  2. aa = pd.DataFrame(np.random.rand(3, 2), columns=['foo', 'bar'], index=['a', 'b', 'c'])
  3. print(aa)
  4. foo bar
  5. a 0.888702 0.962784
  6. b 0.923443 0.935304
  7. c 0.255582 0.105020

8、列名重命名

  1. # 读入文件的时候 重命名
  2. df = pd.read_csv('xxx.csv', names=new_columns, header=0)
  3. # 部分列重命名
  4. df.rename(columns={'a':'A'})
  5. # 没有指定inplace=True, df本⾝的列名并没有改变。
  6. df.rename(columns={'a':'A'}, inplace=True)
  7. # 全部列重命名
  8. # df.columns = new_columns, new_coumns
  9. # 可以是列表或元组, 但新旧列名的长度必须⼀致,否者会不匹配报错。
  10. # 这种改变⽅式是直接改变了原始数据。
  11. df.columns = ['a1', 'b1', 'c1', 'd1']
  12. # str批量修改列名
  13. # 将'a1', 'b1'...修改为'a2', 'b2'...
  14. df.columns = df.columns.str.replace('1','2')

9、字典生成DataFrame

字典的键作为列名

  1. import pandas as pd
  2. dict_data={
  3. 'Name':['Bambang'],
  4. 'Gender':['Male'],
  5. 'Age':[25]
  6. }
  7. df = pd.DataFrame.from_dict(dict_data)
  8. df

image.png

字典的键作为index

  1. dict_data={
  2. 'Name':'Bambang',
  3. 'Gender':'Male',
  4. 'Age':25
  5. }
  6. df = pd.Series(dict_data)
  7. df = pd.DataFrame(df, columns=['index'])
  8. df

image.png

参考资料:https://wenku.baidu.com/view/d914e2aaa3116c175f0e7cd184254b35eefd1aa4.html