Skip to content

Commit c56bf4c

Browse files
authored
Merge pull request #47 from pydanny/document-queryset-to-dataframe
Documented queryset to dataframe
2 parents e19bb45 + 0cf9a6e commit c56bf4c

File tree

2 files changed

+121
-9
lines changed

2 files changed

+121
-9
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ Generates this image
6262

6363
<img src="https://mermaid.ink/img/Y2xhc3NEaWFncmFtCiAgY2xhc3MgZGphbmdvX2NvbnRyaWJfYXV0aF9tb2RlbHNfVXNlclsiZGphbmdvLmNvbnRyaWIuYXV0aC5tb2RlbHM6OlVzZXIiXQogIGRqYW5nb19kYl9tb2RlbHNfdXRpbHNfQWx0ZXJzRGF0YSA8fC0tIGRqYW5nb19kYl9tb2RlbHNfYmFzZV9Nb2RlbAogIGNsYXNzIGRqYW5nb19kYl9tb2RlbHNfdXRpbHNfQWx0ZXJzRGF0YVsiZGphbmdvLmRiLm1vZGVscy51dGlsczo6QWx0ZXJzRGF0YSJdCiAgZGphbmdvX2NvbnRyaWJfYXV0aF9iYXNlX3VzZXJfQWJzdHJhY3RCYXNlVXNlciA8fC0tIGRqYW5nb19jb250cmliX2F1dGhfbW9kZWxzX0Fic3RyYWN0VXNlcgogIGRqYW5nb19jb250cmliX2F1dGhfbW9kZWxzX1Blcm1pc3Npb25zTWl4aW4gPHwtLSBkamFuZ29fY29udHJpYl9hdXRoX21vZGVsc19BYnN0cmFjdFVzZXIKICBjbGFzcyBkamFuZ29fY29udHJpYl9hdXRoX21vZGVsc19BYnN0cmFjdFVzZXJbImRqYW5nby5jb250cmliLmF1dGgubW9kZWxzOjpBYnN0cmFjdFVzZXIiXQogIGNsYXNzIGRqYW5nb19kYl9tb2RlbHNfYmFzZV9Nb2RlbFsiZGphbmdvLmRiLm1vZGVscy5iYXNlOjpNb2RlbCJdCiAgY2xhc3MgZGphbmdvX2NvbnRyaWJfYXV0aF9iYXNlX3VzZXJfQWJzdHJhY3RCYXNlVXNlclsiZGphbmdvLmNvbnRyaWIuYXV0aC5iYXNlX3VzZXI6OkFic3RyYWN0QmFzZVVzZXIiXQogIGRqYW5nb19kYl9tb2RlbHNfYmFzZV9Nb2RlbCA8fC0tIGRqYW5nb19jb250cmliX2F1dGhfYmFzZV91c2VyX0Fic3RyYWN0QmFzZVVzZXIKICBkamFuZ29fZGJfbW9kZWxzX2Jhc2VfTW9kZWwgPHwtLSBkamFuZ29fY29udHJpYl9hdXRoX21vZGVsc19QZXJtaXNzaW9uc01peGluCiAgZGphbmdvX2NvbnRyaWJfYXV0aF9tb2RlbHNfQWJzdHJhY3RVc2VyIDx8LS0gZGphbmdvX2NvbnRyaWJfYXV0aF9tb2RlbHNfVXNlcgogIGNsYXNzIGRqYW5nb19jb250cmliX2F1dGhfbW9kZWxzX1Blcm1pc3Npb25zTWl4aW5bImRqYW5nby5jb250cmliLmF1dGgubW9kZWxzOjpQZXJtaXNzaW9uc01peGluIl0="/>
6464

65+
## QuerySet to Dataframe
66+
67+
```python
68+
plus.read_frame(plus.User.objects.all())
69+
```
70+
6571

6672
# Contributors
6773

docs/usage.ipynb

Lines changed: 115 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
},
2727
{
2828
"cell_type": "code",
29-
"execution_count": 1,
29+
"execution_count": 2,
3030
"metadata": {
3131
"tags": [
3232
"remove-input"
@@ -46,7 +46,7 @@
4646
},
4747
{
4848
"cell_type": "code",
49-
"execution_count": 2,
49+
"execution_count": 3,
5050
"metadata": {},
5151
"outputs": [],
5252
"source": [
@@ -66,7 +66,7 @@
6666
},
6767
{
6868
"cell_type": "code",
69-
"execution_count": 9,
69+
"execution_count": 4,
7070
"metadata": {},
7171
"outputs": [
7272
{
@@ -75,7 +75,7 @@
7575
"<QuerySet [<User: Audrey>, <User: Daniel>]>"
7676
]
7777
},
78-
"execution_count": 9,
78+
"execution_count": 4,
7979
"metadata": {},
8080
"output_type": "execute_result"
8181
}
@@ -109,7 +109,7 @@
109109
},
110110
{
111111
"cell_type": "code",
112-
"execution_count": 10,
112+
"execution_count": 5,
113113
"metadata": {},
114114
"outputs": [
115115
{
@@ -118,7 +118,7 @@
118118
"<QuerySet [<User: Audrey>, <User: Daniel>]>"
119119
]
120120
},
121-
"execution_count": 10,
121+
"execution_count": 5,
122122
"metadata": {},
123123
"output_type": "execute_result"
124124
}
@@ -136,7 +136,7 @@
136136
},
137137
{
138138
"cell_type": "code",
139-
"execution_count": 14,
139+
"execution_count": 6,
140140
"metadata": {},
141141
"outputs": [
142142
{
@@ -160,20 +160,22 @@
160160
"cell_type": "markdown",
161161
"metadata": {},
162162
"source": [
163+
"## Diagrams of Objects\n",
164+
"\n",
163165
"We're not done yet! \n",
164166
"\n",
165167
"We also provide a utility for introspection of classes, which can be useful in sophisticated project architectures. Let's see what happens when we use the `plus.diagram()` function:"
166168
]
167169
},
168170
{
169171
"cell_type": "code",
170-
"execution_count": 15,
172+
"execution_count": 7,
171173
"metadata": {},
172174
"outputs": [
173175
{
174176
"data": {
175177
"text/html": [
176-
"<img src=\"https://mermaid.ink/img/Y2xhc3NEaWFncmFtCiAgY2xhc3MgZGphbmdvX2NvbnRyaWJfYXV0aF9tb2RlbHNfVXNlclsiZGphbmdvLmNvbnRyaWIuYXV0aC5tb2RlbHM6OlVzZXIiXQogIGRqYW5nb19kYl9tb2RlbHNfYmFzZV9Nb2RlbCA8fC0tIGRqYW5nb19jb250cmliX2F1dGhfYmFzZV91c2VyX0Fic3RyYWN0QmFzZVVzZXIKICBjbGFzcyBkamFuZ29fY29udHJpYl9hdXRoX21vZGVsc19QZXJtaXNzaW9uc01peGluWyJkamFuZ28uY29udHJpYi5hdXRoLm1vZGVsczo6UGVybWlzc2lvbnNNaXhpbiJdCiAgZGphbmdvX2NvbnRyaWJfYXV0aF9iYXNlX3VzZXJfQWJzdHJhY3RCYXNlVXNlciA8fC0tIGRqYW5nb19jb250cmliX2F1dGhfbW9kZWxzX0Fic3RyYWN0VXNlcgogIGRqYW5nb19kYl9tb2RlbHNfdXRpbHNfQWx0ZXJzRGF0YSA8fC0tIGRqYW5nb19kYl9tb2RlbHNfYmFzZV9Nb2RlbAogIGRqYW5nb19jb250cmliX2F1dGhfbW9kZWxzX0Fic3RyYWN0VXNlciA8fC0tIGRqYW5nb19jb250cmliX2F1dGhfbW9kZWxzX1VzZXIKICBjbGFzcyBkamFuZ29fZGJfbW9kZWxzX3V0aWxzX0FsdGVyc0RhdGFbImRqYW5nby5kYi5tb2RlbHMudXRpbHM6OkFsdGVyc0RhdGEiXQogIGRqYW5nb19kYl9tb2RlbHNfYmFzZV9Nb2RlbCA8fC0tIGRqYW5nb19jb250cmliX2F1dGhfbW9kZWxzX1Blcm1pc3Npb25zTWl4aW4KICBjbGFzcyBkamFuZ29fY29udHJpYl9hdXRoX2Jhc2VfdXNlcl9BYnN0cmFjdEJhc2VVc2VyWyJkamFuZ28uY29udHJpYi5hdXRoLmJhc2VfdXNlcjo6QWJzdHJhY3RCYXNlVXNlciJdCiAgY2xhc3MgZGphbmdvX2NvbnRyaWJfYXV0aF9tb2RlbHNfQWJzdHJhY3RVc2VyWyJkamFuZ28uY29udHJpYi5hdXRoLm1vZGVsczo6QWJzdHJhY3RVc2VyIl0KICBjbGFzcyBkamFuZ29fZGJfbW9kZWxzX2Jhc2VfTW9kZWxbImRqYW5nby5kYi5tb2RlbHMuYmFzZTo6TW9kZWwiXQogIGRqYW5nb19jb250cmliX2F1dGhfbW9kZWxzX1Blcm1pc3Npb25zTWl4aW4gPHwtLSBkamFuZ29fY29udHJpYl9hdXRoX21vZGVsc19BYnN0cmFjdFVzZXI=\"/>"
178+
"<img src=\"https://mermaid.ink/img/Y2xhc3NEaWFncmFtCiAgY2xhc3MgZGphbmdvX2NvbnRyaWJfYXV0aF9tb2RlbHNfUGVybWlzc2lvbnNNaXhpblsiZGphbmdvLmNvbnRyaWIuYXV0aC5tb2RlbHM6OlBlcm1pc3Npb25zTWl4aW4iXQogIGNsYXNzIGRqYW5nb19jb250cmliX2F1dGhfYmFzZV91c2VyX0Fic3RyYWN0QmFzZVVzZXJbImRqYW5nby5jb250cmliLmF1dGguYmFzZV91c2VyOjpBYnN0cmFjdEJhc2VVc2VyIl0KICBjbGFzcyBkamFuZ29fY29udHJpYl9hdXRoX21vZGVsc19Vc2VyWyJkamFuZ28uY29udHJpYi5hdXRoLm1vZGVsczo6VXNlciJdCiAgZGphbmdvX2RiX21vZGVsc19iYXNlX01vZGVsIDx8LS0gZGphbmdvX2NvbnRyaWJfYXV0aF9iYXNlX3VzZXJfQWJzdHJhY3RCYXNlVXNlcgogIGRqYW5nb19kYl9tb2RlbHNfYmFzZV9Nb2RlbCA8fC0tIGRqYW5nb19jb250cmliX2F1dGhfbW9kZWxzX1Blcm1pc3Npb25zTWl4aW4KICBkamFuZ29fY29udHJpYl9hdXRoX21vZGVsc19QZXJtaXNzaW9uc01peGluIDx8LS0gZGphbmdvX2NvbnRyaWJfYXV0aF9tb2RlbHNfQWJzdHJhY3RVc2VyCiAgZGphbmdvX2NvbnRyaWJfYXV0aF9iYXNlX3VzZXJfQWJzdHJhY3RCYXNlVXNlciA8fC0tIGRqYW5nb19jb250cmliX2F1dGhfbW9kZWxzX0Fic3RyYWN0VXNlcgogIGNsYXNzIGRqYW5nb19kYl9tb2RlbHNfdXRpbHNfQWx0ZXJzRGF0YVsiZGphbmdvLmRiLm1vZGVscy51dGlsczo6QWx0ZXJzRGF0YSJdCiAgZGphbmdvX2RiX21vZGVsc191dGlsc19BbHRlcnNEYXRhIDx8LS0gZGphbmdvX2RiX21vZGVsc19iYXNlX01vZGVsCiAgZGphbmdvX2NvbnRyaWJfYXV0aF9tb2RlbHNfQWJzdHJhY3RVc2VyIDx8LS0gZGphbmdvX2NvbnRyaWJfYXV0aF9tb2RlbHNfVXNlcgogIGNsYXNzIGRqYW5nb19jb250cmliX2F1dGhfbW9kZWxzX0Fic3RyYWN0VXNlclsiZGphbmdvLmNvbnRyaWIuYXV0aC5tb2RlbHM6OkFic3RyYWN0VXNlciJdCiAgY2xhc3MgZGphbmdvX2RiX21vZGVsc19iYXNlX01vZGVsWyJkamFuZ28uZGIubW9kZWxzLmJhc2U6Ok1vZGVsIl0=\"/>"
177179
],
178180
"text/plain": [
179181
"<IPython.core.display.Image object>"
@@ -186,6 +188,110 @@
186188
"source": [
187189
"plus.diagram(plus.User)"
188190
]
191+
},
192+
{
193+
"cell_type": "markdown",
194+
"metadata": {},
195+
"source": [
196+
"# Data frames from QuerySets\n",
197+
"\n",
198+
"Powered by [django-pandas](https://github.com/chrisdev/django-pandas), we can also trivially turn any Django QuerySet into a Dataframe."
199+
]
200+
},
201+
{
202+
"cell_type": "code",
203+
"execution_count": 9,
204+
"metadata": {},
205+
"outputs": [
206+
{
207+
"data": {
208+
"text/html": [
209+
"<div>\n",
210+
"<style scoped>\n",
211+
" .dataframe tbody tr th:only-of-type {\n",
212+
" vertical-align: middle;\n",
213+
" }\n",
214+
"\n",
215+
" .dataframe tbody tr th {\n",
216+
" vertical-align: top;\n",
217+
" }\n",
218+
"\n",
219+
" .dataframe thead th {\n",
220+
" text-align: right;\n",
221+
" }\n",
222+
"</style>\n",
223+
"<table border=\"1\" class=\"dataframe\">\n",
224+
" <thead>\n",
225+
" <tr style=\"text-align: right;\">\n",
226+
" <th></th>\n",
227+
" <th>id</th>\n",
228+
" <th>password</th>\n",
229+
" <th>last_login</th>\n",
230+
" <th>is_superuser</th>\n",
231+
" <th>username</th>\n",
232+
" <th>first_name</th>\n",
233+
" <th>last_name</th>\n",
234+
" <th>email</th>\n",
235+
" <th>is_staff</th>\n",
236+
" <th>is_active</th>\n",
237+
" <th>date_joined</th>\n",
238+
" </tr>\n",
239+
" </thead>\n",
240+
" <tbody>\n",
241+
" <tr>\n",
242+
" <th>0</th>\n",
243+
" <td>26</td>\n",
244+
" <td>!gqoQESZIz43EXIcxrKzFKm5BaYBSqgoYykZUyv8v</td>\n",
245+
" <td>None</td>\n",
246+
" <td>False</td>\n",
247+
" <td>Audrey</td>\n",
248+
" <td></td>\n",
249+
" <td></td>\n",
250+
" <td></td>\n",
251+
" <td>False</td>\n",
252+
" <td>True</td>\n",
253+
" <td>2023-10-03 10:20:05.539784+00:00</td>\n",
254+
" </tr>\n",
255+
" <tr>\n",
256+
" <th>1</th>\n",
257+
" <td>27</td>\n",
258+
" <td>!PiFAACxsvwe5L8rMVNyIqaL26AK9EHVI6vEixkw4</td>\n",
259+
" <td>None</td>\n",
260+
" <td>False</td>\n",
261+
" <td>Daniel</td>\n",
262+
" <td></td>\n",
263+
" <td></td>\n",
264+
" <td></td>\n",
265+
" <td>False</td>\n",
266+
" <td>True</td>\n",
267+
" <td>2023-10-03 10:20:05.541464+00:00</td>\n",
268+
" </tr>\n",
269+
" </tbody>\n",
270+
"</table>\n",
271+
"</div>"
272+
],
273+
"text/plain": [
274+
" id password last_login is_superuser \\\n",
275+
"0 26 !gqoQESZIz43EXIcxrKzFKm5BaYBSqgoYykZUyv8v None False \n",
276+
"1 27 !PiFAACxsvwe5L8rMVNyIqaL26AK9EHVI6vEixkw4 None False \n",
277+
"\n",
278+
" username first_name last_name email is_staff is_active \\\n",
279+
"0 Audrey False True \n",
280+
"1 Daniel False True \n",
281+
"\n",
282+
" date_joined \n",
283+
"0 2023-10-03 10:20:05.539784+00:00 \n",
284+
"1 2023-10-03 10:20:05.541464+00:00 "
285+
]
286+
},
287+
"execution_count": 9,
288+
"metadata": {},
289+
"output_type": "execute_result"
290+
}
291+
],
292+
"source": [
293+
"plus.read_frame(plus.User.objects.all())"
294+
]
189295
}
190296
],
191297
"metadata": {

0 commit comments

Comments
 (0)